TSTP Solution File: ALG261^1 by Lash---1.13

View Problem - Process Solution

%------------------------------------------------------------------------------
% File     : Lash---1.13
% Problem  : ALG261^1 : TPTP v8.1.2. Bugfixed v5.2.0.
% Transfm  : none
% Format   : tptp:raw
% Command  : lash -P picomus -M modes -p tstp -t %d %s

% Computer : n023.cluster.edu
% Model    : x86_64 x86_64
% CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 2.10GHz
% Memory   : 8042.1875MB
% OS       : Linux 3.10.0-693.el7.x86_64
% CPULimit : 300s
% WCLimit  : 300s
% DateTime : Wed Aug 30 16:33:45 EDT 2023

% Result   : Theorem 21.29s 21.59s
% Output   : Proof 21.29s
% Verified : 
% SZS Type : ERROR: Analysing output (MakeTreeStats fails)

% Comments : 
%------------------------------------------------------------------------------
thf(ty_subst,type,
    subst: $tType ).

thf(ty_term,type,
    term: $tType ).

thf(ty_eigen__1,type,
    eigen__1: term ).

thf(ty_id,type,
    id: subst ).

thf(ty_comp,type,
    comp: subst > subst > subst ).

thf(ty_lam,type,
    lam: term > term ).

thf(ty_sub,type,
    sub: term > subst > term ).

thf(ty_eigen__0,type,
    eigen__0: term ).

thf(ty_push,type,
    push: term > subst > subst ).

thf(ty_var,type,
    var: term > $o ).

thf(ty_one,type,
    one: term ).

thf(ty_sh,type,
    sh: subst ).

thf(ty_ap,type,
    ap: term > term > term ).

thf(sP1,plain,
    ( sP1
  <=> ! [X1: term] :
        ( ( sub @ X1 @ id )
        = X1 ) ),
    introduced(definition,[new_symbols(definition,[sP1])]) ).

thf(sP2,plain,
    ( sP2
  <=> ( ( sub @ ( ap @ ( sub @ eigen__0 @ id ) @ eigen__1 ) @ id )
      = ( ap @ ( sub @ eigen__0 @ id ) @ eigen__1 ) ) ),
    introduced(definition,[new_symbols(definition,[sP2])]) ).

thf(sP3,plain,
    ( sP3
  <=> ! [X1: term] :
        ~ ( var @ ( ap @ ( sub @ eigen__0 @ id ) @ X1 ) ) ),
    introduced(definition,[new_symbols(definition,[sP3])]) ).

thf(sP4,plain,
    ( sP4
  <=> ! [X1: term,X2: term] :
        ~ ( var @ ( ap @ X1 @ X2 ) ) ),
    introduced(definition,[new_symbols(definition,[sP4])]) ).

thf(sP5,plain,
    ( sP5
  <=> ( var @ ( sub @ ( ap @ ( sub @ eigen__0 @ id ) @ eigen__1 ) @ id ) ) ),
    introduced(definition,[new_symbols(definition,[sP5])]) ).

thf(sP6,plain,
    ( sP6
  <=> ( var @ ( ap @ ( sub @ eigen__0 @ id ) @ eigen__1 ) ) ),
    introduced(definition,[new_symbols(definition,[sP6])]) ).

thf(def_axapp,definition,
    ( axapp
    = ( ! [X1: term,X2: term,X3: subst] :
          ( ( sub @ ( ap @ X1 @ X2 ) @ X3 )
          = ( ap @ ( sub @ X1 @ X3 ) @ ( sub @ X2 @ X3 ) ) ) ) ) ).

thf(def_axvarcons,definition,
    ( axvarcons
    = ( ! [X1: term,X2: subst] :
          ( ( sub @ one @ ( push @ X1 @ X2 ) )
          = X1 ) ) ) ).

thf(def_axvarid,definition,
    axvarid = sP1 ).

thf(def_axabs,definition,
    ( axabs
    = ( ! [X1: term,X2: subst] :
          ( ( sub @ ( lam @ X1 ) @ X2 )
          = ( lam @ ( sub @ X1 @ ( push @ one @ ( comp @ X2 @ sh ) ) ) ) ) ) ) ).

thf(def_axclos,definition,
    ( axclos
    = ( ! [X1: term,X2: subst,X3: subst] :
          ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
          = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) ) ) ) ).

thf(def_axidl,definition,
    ( axidl
    = ( ! [X1: subst] :
          ( ( comp @ id @ X1 )
          = X1 ) ) ) ).

thf(def_axshiftcons,definition,
    ( axshiftcons
    = ( ! [X1: term,X2: subst] :
          ( ( comp @ sh @ ( push @ X1 @ X2 ) )
          = X2 ) ) ) ).

thf(def_axassoc,definition,
    ( axassoc
    = ( ! [X1: subst,X2: subst,X3: subst] :
          ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
          = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) ) ) ) ).

thf(def_axmap,definition,
    ( axmap
    = ( ! [X1: term,X2: subst,X3: subst] :
          ( ( comp @ ( push @ X1 @ X2 ) @ X3 )
          = ( push @ ( sub @ X1 @ X3 ) @ ( comp @ X2 @ X3 ) ) ) ) ) ).

thf(def_axidr,definition,
    ( axidr
    = ( ! [X1: subst] :
          ( ( comp @ X1 @ id )
          = X1 ) ) ) ).

thf(def_axvarshift,definition,
    ( axvarshift
    = ( ( push @ one @ sh )
      = id ) ) ).

thf(def_axscons,definition,
    ( axscons
    = ( ! [X1: subst] :
          ( ( push @ ( sub @ one @ X1 ) @ ( comp @ sh @ X1 ) )
          = X1 ) ) ) ).

thf(def_ulamvar1,definition,
    ( ulamvar1
    = ( var @ one ) ) ).

thf(def_ulamvarsh,definition,
    ( ulamvarsh
    = ( ! [X1: term] :
          ( ^ [X2: $o,X3: $o] :
              ( X2
             => X3 )
          @ ( var @ X1 )
          @ ( var @ ( sub @ X1 @ sh ) ) ) ) ) ).

thf(def_ulamvarind,definition,
    ( ulamvarind
    = ( ! [X1: term > $o] :
          ( ^ [X2: $o,X3: $o] :
              ( X2
             => X3 )
          @ ( X1 @ one )
          @ ( ^ [X2: $o,X3: $o] :
                ( X2
               => X3 )
            @ ! [X2: term] :
                ( ^ [X3: $o,X4: $o] :
                    ( X3
                   => X4 )
                @ ( var @ X2 )
                @ ( ^ [X3: $o,X4: $o] :
                      ( X3
                     => X4 )
                  @ ( X1 @ X2 )
                  @ ( X1 @ ( sub @ X2 @ sh ) ) ) )
            @ ! [X2: term] :
                ( ^ [X3: $o,X4: $o] :
                    ( X3
                   => X4 )
                @ ( var @ X2 )
                @ ( X1 @ X2 ) ) ) ) ) ) ).

thf(def_apinj1,definition,
    ( apinj1
    = ( ! [X1: term,X2: term,X3: term,X4: term] :
          ( ^ [X5: $o,X6: $o] :
              ( X5
             => X6 )
          @ ( ( ap @ X1 @ X3 )
            = ( ap @ X2 @ X4 ) )
          @ ( X1 = X2 ) ) ) ) ).

thf(def_apinj2,definition,
    ( apinj2
    = ( ! [X1: term,X2: term,X3: term,X4: term] :
          ( ^ [X5: $o,X6: $o] :
              ( X5
             => X6 )
          @ ( ( ap @ X1 @ X3 )
            = ( ap @ X2 @ X4 ) )
          @ ( X3 = X4 ) ) ) ) ).

thf(def_laminj,definition,
    ( laminj
    = ( ! [X1: term,X2: term] :
          ( ^ [X3: $o,X4: $o] :
              ( X3
             => X4 )
          @ ( ( lam @ X1 )
            = ( lam @ X2 ) )
          @ ( X1 = X2 ) ) ) ) ).

thf(def_shinj,definition,
    ( shinj
    = ( ! [X1: term,X2: term] :
          ( ^ [X3: $o,X4: $o] :
              ( X3
             => X4 )
          @ ( ( sub @ X1 @ sh )
            = ( sub @ X2 @ sh ) )
          @ ( X1 = X2 ) ) ) ) ).

thf(def_lamnotap,definition,
    ( lamnotap
    = ( ! [X1: term,X2: term,X3: term] :
          ( (~)
          @ ( ( lam @ X1 )
            = ( ap @ X2 @ X3 ) ) ) ) ) ).

thf(def_apnotvar,definition,
    ( apnotvar
    = ( ! [X1: term,X2: term] : ( (~) @ ( var @ ( ap @ X1 @ X2 ) ) ) ) ) ).

thf(def_lamnotvar,definition,
    ( lamnotvar
    = ( ! [X1: term] : ( (~) @ ( var @ ( lam @ X1 ) ) ) ) ) ).

thf(def_induction,definition,
    ( induction
    = ( ! [X1: term > $o] :
          ( ^ [X2: $o,X3: $o] :
              ( X2
             => X3 )
          @ ! [X2: term] :
              ( ^ [X3: $o,X4: $o] :
                  ( X3
                 => X4 )
              @ ( var @ X2 )
              @ ( X1 @ X2 ) )
          @ ( ^ [X2: $o,X3: $o] :
                ( X2
               => X3 )
            @ ! [X2: term,X3: term] :
                ( ^ [X4: $o,X5: $o] :
                    ( X4
                   => X5 )
                @ ( X1 @ X2 )
                @ ( ^ [X4: $o,X5: $o] :
                      ( X4
                     => X5 )
                  @ ( X1 @ X3 )
                  @ ( X1 @ ( ap @ X2 @ X3 ) ) ) )
            @ ( ^ [X2: $o,X3: $o] :
                  ( X2
                 => X3 )
              @ ! [X2: term] :
                  ( ^ [X3: $o,X4: $o] :
                      ( X3
                     => X4 )
                  @ ( X1 @ X2 )
                  @ ( X1 @ ( lam @ X2 ) ) )
              @ ! [X2: term] : ( X1 @ X2 ) ) ) ) ) ) ).

thf(def_pushprop,definition,
    ( pushprop
    = ( ! [X1: term > $o,X2: term,X3: subst] :
          ( ^ [X4: $o,X5: $o] :
              ( X4
             => X5 )
          @ ! [X4: term] :
              ( ^ [X5: $o,X6: $o] :
                  ( X5
                 => X6 )
              @ ( var @ X4 )
              @ ( X1 @ ( sub @ X4 @ X3 ) ) )
          @ ( ^ [X4: $o,X5: $o] :
                ( X4
               => X5 )
            @ ( X1 @ X2 )
            @ ! [X4: term] :
                ( ^ [X5: $o,X6: $o] :
                    ( X5
                   => X6 )
                @ ( var @ X4 )
                @ ( X1 @ ( sub @ X4 @ ( push @ X2 @ X3 ) ) ) ) ) ) ) ) ).

thf(def_induction2lem,definition,
    ( induction2lem
    = ( ! [X1: term > $o] :
          ( ^ [X2: $o,X3: $o] :
              ( X2
             => X3 )
          @ ! [X2: term,X3: term] :
              ( ^ [X4: $o,X5: $o] :
                  ( X4
                 => X5 )
              @ ( X1 @ X2 )
              @ ( ^ [X4: $o,X5: $o] :
                    ( X4
                   => X5 )
                @ ( X1 @ X3 )
                @ ( X1 @ ( ap @ X2 @ X3 ) ) ) )
          @ ( ^ [X2: $o,X3: $o] :
                ( X2
               => X3 )
            @ ! [X2: term] :
                ( ^ [X3: $o,X4: $o] :
                    ( X3
                   => X4 )
                @ ! [X3: term] :
                    ( ^ [X4: $o,X5: $o] :
                        ( X4
                       => X5 )
                    @ ( X1 @ X3 )
                    @ ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                @ ( X1 @ ( lam @ X2 ) ) )
            @ ! [X2: term,X3: subst] :
                ( ^ [X4: $o,X5: $o] :
                    ( X4
                   => X5 )
                @ ! [X4: term] :
                    ( ^ [X5: $o,X6: $o] :
                        ( X5
                       => X6 )
                    @ ( var @ X4 )
                    @ ( X1 @ ( sub @ X4 @ X3 ) ) )
                @ ( X1 @ ( sub @ X2 @ X3 ) ) ) ) ) ) ) ).

thf(def_induction2,definition,
    ( induction2
    = ( ! [X1: term > $o] :
          ( ^ [X2: $o,X3: $o] :
              ( X2
             => X3 )
          @ ! [X2: term] :
              ( ^ [X3: $o,X4: $o] :
                  ( X3
                 => X4 )
              @ ( var @ X2 )
              @ ( X1 @ X2 ) )
          @ ( ^ [X2: $o,X3: $o] :
                ( X2
               => X3 )
            @ ! [X2: term,X3: term] :
                ( ^ [X4: $o,X5: $o] :
                    ( X4
                   => X5 )
                @ ( X1 @ X2 )
                @ ( ^ [X4: $o,X5: $o] :
                      ( X4
                     => X5 )
                  @ ( X1 @ X3 )
                  @ ( X1 @ ( ap @ X2 @ X3 ) ) ) )
            @ ( ^ [X2: $o,X3: $o] :
                  ( X2
                 => X3 )
              @ ! [X2: term] :
                  ( ^ [X3: $o,X4: $o] :
                      ( X3
                     => X4 )
                  @ ! [X3: term] :
                      ( ^ [X4: $o,X5: $o] :
                          ( X4
                         => X5 )
                      @ ( X1 @ X3 )
                      @ ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                  @ ( X1 @ ( lam @ X2 ) ) )
              @ ! [X2: term] : ( X1 @ X2 ) ) ) ) ) ) ).

thf(def_substmonoid,definition,
    ( substmonoid
    = ( ! [X1: subst,X2: subst,X3: subst] :
          ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
          = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
      & ! [X1: subst] :
          ( ( comp @ id @ X1 )
          = X1 )
      & ! [X1: subst] :
          ( ( comp @ X1 @ id )
          = X1 ) ) ) ).

thf(def_termmset,definition,
    ( termmset
    = ( ! [X1: term,X2: subst,X3: subst] :
          ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
          = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) )
      & sP1 ) ) ).

thf(def_hoasap,definition,
    ( hoasap
    = ( ^ [X1: subst,X2: term,X3: subst,X4: term] : ( ap @ ( sub @ X2 @ X3 ) @ X4 ) ) ) ).

thf(def_hoaslam,definition,
    ( hoaslam
    = ( ^ [X1: subst,X2: subst > term > term] : ( lam @ ( X2 @ sh @ one ) ) ) ) ).

thf(def_hoasvar,definition,
    ( hoasvar
    = ( ^ [X1: subst,X2: term,X3: subst] : ( var @ ( sub @ X2 @ X3 ) ) ) ) ).

thf(def_hoasapinj1,definition,
    ( hoasapinj1
    = ( ! [X1: term,X2: term,X3: term,X4: term] :
          ( ^ [X5: $o,X6: $o] :
              ( X5
             => X6 )
          @ ( ( hoasap @ id @ X1 @ id @ X3 )
            = ( hoasap @ id @ X2 @ id @ X4 ) )
          @ ( X1 = X2 ) ) ) ) ).

thf(def_hoasapinj2,definition,
    ( hoasapinj2
    = ( ! [X1: term,X2: term,X3: term,X4: term] :
          ( ^ [X5: $o,X6: $o] :
              ( X5
             => X6 )
          @ ( ( hoasap @ id @ X1 @ id @ X3 )
            = ( hoasap @ id @ X2 @ id @ X4 ) )
          @ ( X3 = X4 ) ) ) ) ).

thf(def_hoaslaminj,definition,
    ( hoaslaminj
    = ( ! [X1: subst > term > term] :
          ( ^ [X2: $o,X3: $o] :
              ( X2
             => X3 )
          @ ! [X2: subst,X3: term,X4: subst] :
              ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
              = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
          @ ! [X2: subst > term > term] :
              ( ^ [X3: $o,X4: $o] :
                  ( X3
                 => X4 )
              @ ! [X3: subst,X4: term,X5: subst] :
                  ( ( sub @ ( X2 @ X3 @ X4 ) @ X5 )
                  = ( X2 @ ( comp @ X3 @ X5 ) @ ( sub @ X4 @ X5 ) ) )
              @ ( ^ [X3: $o,X4: $o] :
                    ( X3
                   => X4 )
                @ ( ( hoaslam @ id
                    @ ^ [X3: subst,X4: term] : ( X1 @ X3 @ X4 ) )
                  = ( hoaslam @ id
                    @ ^ [X3: subst,X4: term] : ( X2 @ X3 @ X4 ) ) )
                @ ! [X3: subst,X4: term] :
                    ( ( X1 @ X3 @ X4 )
                    = ( X2 @ X3 @ X4 ) ) ) ) ) ) ) ).

thf(def_hoaslamnotap,definition,
    ( hoaslamnotap
    = ( ! [X1: subst > term > term] :
          ( ^ [X2: $o,X3: $o] :
              ( X2
             => X3 )
          @ ! [X2: subst,X3: term,X4: subst] :
              ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
              = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
          @ ! [X2: term,X3: term] :
              ( (~)
              @ ( ( hoaslam @ id
                  @ ^ [X4: subst,X5: term] : ( X1 @ X4 @ X5 ) )
                = ( hoasap @ id @ X2 @ id @ X3 ) ) ) ) ) ) ).

thf(def_hoaslamnotvar,definition,
    ( hoaslamnotvar
    = ( ! [X1: subst > term > term] :
          ( ^ [X2: $o,X3: $o] :
              ( X2
             => X3 )
          @ ! [X2: subst,X3: term,X4: subst] :
              ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
              = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
          @ ( (~)
            @ ( hoasvar @ id
              @ ( hoaslam @ id
                @ ^ [X2: subst,X3: term] : ( X1 @ X2 @ X3 ) )
              @ id ) ) ) ) ) ).

thf(def_hoasapnotvar,definition,
    ( hoasapnotvar
    = ( ! [X1: term,X2: term] : ( (~) @ ( hoasvar @ id @ ( hoasap @ id @ X1 @ id @ X2 ) @ id ) ) ) ) ).

thf(def_hoasapnotvar_gthm,definition,
    ( hoasapnotvar_gthm
    = ( ^ [X1: $o,X2: $o] :
          ( X1
         => X2 )
      @ axapp
      @ ( ^ [X1: $o,X2: $o] :
            ( X1
           => X2 )
        @ axvarcons
        @ ( ^ [X1: $o,X2: $o] :
              ( X1
             => X2 )
          @ axvarid
          @ ( ^ [X1: $o,X2: $o] :
                ( X1
               => X2 )
            @ axabs
            @ ( ^ [X1: $o,X2: $o] :
                  ( X1
                 => X2 )
              @ axclos
              @ ( ^ [X1: $o,X2: $o] :
                    ( X1
                   => X2 )
                @ axidl
                @ ( ^ [X1: $o,X2: $o] :
                      ( X1
                     => X2 )
                  @ axshiftcons
                  @ ( ^ [X1: $o,X2: $o] :
                        ( X1
                       => X2 )
                    @ axassoc
                    @ ( ^ [X1: $o,X2: $o] :
                          ( X1
                         => X2 )
                      @ axmap
                      @ ( ^ [X1: $o,X2: $o] :
                            ( X1
                           => X2 )
                        @ axidr
                        @ ( ^ [X1: $o,X2: $o] :
                              ( X1
                             => X2 )
                          @ axvarshift
                          @ ( ^ [X1: $o,X2: $o] :
                                ( X1
                               => X2 )
                            @ axscons
                            @ ( ^ [X1: $o,X2: $o] :
                                  ( X1
                                 => X2 )
                              @ ulamvar1
                              @ ( ^ [X1: $o,X2: $o] :
                                    ( X1
                                   => X2 )
                                @ ulamvarsh
                                @ ( ^ [X1: $o,X2: $o] :
                                      ( X1
                                     => X2 )
                                  @ ulamvarind
                                  @ ( ^ [X1: $o,X2: $o] :
                                        ( X1
                                       => X2 )
                                    @ apinj1
                                    @ ( ^ [X1: $o,X2: $o] :
                                          ( X1
                                         => X2 )
                                      @ apinj2
                                      @ ( ^ [X1: $o,X2: $o] :
                                            ( X1
                                           => X2 )
                                        @ laminj
                                        @ ( ^ [X1: $o,X2: $o] :
                                              ( X1
                                             => X2 )
                                          @ shinj
                                          @ ( ^ [X1: $o,X2: $o] :
                                                ( X1
                                               => X2 )
                                            @ lamnotap
                                            @ ( ^ [X1: $o,X2: $o] :
                                                  ( X1
                                                 => X2 )
                                              @ apnotvar
                                              @ ( ^ [X1: $o,X2: $o] :
                                                    ( X1
                                                   => X2 )
                                                @ lamnotvar
                                                @ ( ^ [X1: $o,X2: $o] :
                                                      ( X1
                                                     => X2 )
                                                  @ induction
                                                  @ ( ^ [X1: $o,X2: $o] :
                                                        ( X1
                                                       => X2 )
                                                    @ pushprop
                                                    @ ( ^ [X1: $o,X2: $o] :
                                                          ( X1
                                                         => X2 )
                                                      @ induction2lem
                                                      @ ( ^ [X1: $o,X2: $o] :
                                                            ( X1
                                                           => X2 )
                                                        @ induction2
                                                        @ ( ^ [X1: $o,X2: $o] :
                                                              ( X1
                                                             => X2 )
                                                          @ substmonoid
                                                          @ ( ^ [X1: $o,X2: $o] :
                                                                ( X1
                                                               => X2 )
                                                            @ termmset
                                                            @ ( ^ [X1: $o,X2: $o] :
                                                                  ( X1
                                                                 => X2 )
                                                              @ hoasapinj1
                                                              @ ( ^ [X1: $o,X2: $o] :
                                                                    ( X1
                                                                   => X2 )
                                                                @ hoasapinj2
                                                                @ ( ^ [X1: $o,X2: $o] :
                                                                      ( X1
                                                                     => X2 )
                                                                  @ hoaslaminj
                                                                  @ ( ^ [X1: $o,X2: $o] :
                                                                        ( X1
                                                                       => X2 )
                                                                    @ hoaslamnotap
                                                                    @ ( ^ [X1: $o,X2: $o] :
                                                                          ( X1
                                                                         => X2 )
                                                                      @ hoaslamnotvar
                                                                      @ hoasapnotvar ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ).

thf(thm,conjecture,
    ( ! [X1: term,X2: term,X3: subst] :
        ( ( sub @ ( ap @ X1 @ X2 ) @ X3 )
        = ( ap @ ( sub @ X1 @ X3 ) @ ( sub @ X2 @ X3 ) ) )
   => ( ! [X1: term,X2: subst] :
          ( ( sub @ one @ ( push @ X1 @ X2 ) )
          = X1 )
     => ( sP1
       => ( ! [X1: term,X2: subst] :
              ( ( sub @ ( lam @ X1 ) @ X2 )
              = ( lam @ ( sub @ X1 @ ( push @ one @ ( comp @ X2 @ sh ) ) ) ) )
         => ( ! [X1: term,X2: subst,X3: subst] :
                ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
                = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) )
           => ( ! [X1: subst] :
                  ( ( comp @ id @ X1 )
                  = X1 )
             => ( ! [X1: term,X2: subst] :
                    ( ( comp @ sh @ ( push @ X1 @ X2 ) )
                    = X2 )
               => ( ! [X1: subst,X2: subst,X3: subst] :
                      ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
                      = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
                 => ( ! [X1: term,X2: subst,X3: subst] :
                        ( ( comp @ ( push @ X1 @ X2 ) @ X3 )
                        = ( push @ ( sub @ X1 @ X3 ) @ ( comp @ X2 @ X3 ) ) )
                   => ( ! [X1: subst] :
                          ( ( comp @ X1 @ id )
                          = X1 )
                     => ( ( ( push @ one @ sh )
                          = id )
                       => ( ! [X1: subst] :
                              ( ( push @ ( sub @ one @ X1 ) @ ( comp @ sh @ X1 ) )
                              = X1 )
                         => ( ( var @ one )
                           => ( ! [X1: term] :
                                  ( ( var @ X1 )
                                 => ( var @ ( sub @ X1 @ sh ) ) )
                             => ( ! [X1: term > $o] :
                                    ( ( X1 @ one )
                                   => ( ! [X2: term] :
                                          ( ( var @ X2 )
                                         => ( ( X1 @ X2 )
                                           => ( X1 @ ( sub @ X2 @ sh ) ) ) )
                                     => ! [X2: term] :
                                          ( ( var @ X2 )
                                         => ( X1 @ X2 ) ) ) )
                               => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                      ( ( ( ap @ X1 @ X3 )
                                        = ( ap @ X2 @ X4 ) )
                                     => ( X1 = X2 ) )
                                 => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                        ( ( ( ap @ X1 @ X3 )
                                          = ( ap @ X2 @ X4 ) )
                                       => ( X3 = X4 ) )
                                   => ( ! [X1: term,X2: term] :
                                          ( ( ( lam @ X1 )
                                            = ( lam @ X2 ) )
                                         => ( X1 = X2 ) )
                                     => ( ! [X1: term,X2: term] :
                                            ( ( ( sub @ X1 @ sh )
                                              = ( sub @ X2 @ sh ) )
                                           => ( X1 = X2 ) )
                                       => ( ! [X1: term,X2: term,X3: term] :
                                              ( ( lam @ X1 )
                                             != ( ap @ X2 @ X3 ) )
                                         => ( sP4
                                           => ( ! [X1: term] :
                                                  ~ ( var @ ( lam @ X1 ) )
                                             => ( ! [X1: term > $o] :
                                                    ( ! [X2: term] :
                                                        ( ( var @ X2 )
                                                       => ( X1 @ X2 ) )
                                                   => ( ! [X2: term,X3: term] :
                                                          ( ( X1 @ X2 )
                                                         => ( ( X1 @ X3 )
                                                           => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                                     => ( ! [X2: term] :
                                                            ( ( X1 @ X2 )
                                                           => ( X1 @ ( lam @ X2 ) ) )
                                                       => ! [X2: term] : ( X1 @ X2 ) ) ) )
                                               => ( ! [X1: term > $o,X2: term,X3: subst] :
                                                      ( ! [X4: term] :
                                                          ( ( var @ X4 )
                                                         => ( X1 @ ( sub @ X4 @ X3 ) ) )
                                                     => ( ( X1 @ X2 )
                                                       => ! [X4: term] :
                                                            ( ( var @ X4 )
                                                           => ( X1 @ ( sub @ X4 @ ( push @ X2 @ X3 ) ) ) ) ) )
                                                 => ( ! [X1: term > $o] :
                                                        ( ! [X2: term,X3: term] :
                                                            ( ( X1 @ X2 )
                                                           => ( ( X1 @ X3 )
                                                             => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                                       => ( ! [X2: term] :
                                                              ( ! [X3: term] :
                                                                  ( ( X1 @ X3 )
                                                                 => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                                                             => ( X1 @ ( lam @ X2 ) ) )
                                                         => ! [X2: term,X3: subst] :
                                                              ( ! [X4: term] :
                                                                  ( ( var @ X4 )
                                                                 => ( X1 @ ( sub @ X4 @ X3 ) ) )
                                                             => ( X1 @ ( sub @ X2 @ X3 ) ) ) ) )
                                                   => ( ! [X1: term > $o] :
                                                          ( ! [X2: term] :
                                                              ( ( var @ X2 )
                                                             => ( X1 @ X2 ) )
                                                         => ( ! [X2: term,X3: term] :
                                                                ( ( X1 @ X2 )
                                                               => ( ( X1 @ X3 )
                                                                 => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                                           => ( ! [X2: term] :
                                                                  ( ! [X3: term] :
                                                                      ( ( X1 @ X3 )
                                                                     => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                                                                 => ( X1 @ ( lam @ X2 ) ) )
                                                             => ! [X2: term] : ( X1 @ X2 ) ) ) )
                                                     => ( ~ ( ~ ( ! [X1: subst,X2: subst,X3: subst] :
                                                                    ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
                                                                    = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
                                                               => ~ ! [X1: subst] :
                                                                      ( ( comp @ id @ X1 )
                                                                      = X1 ) )
                                                           => ~ ! [X1: subst] :
                                                                  ( ( comp @ X1 @ id )
                                                                  = X1 ) )
                                                       => ( ~ ( ! [X1: term,X2: subst,X3: subst] :
                                                                  ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
                                                                  = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) )
                                                             => ~ sP1 )
                                                         => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                                                ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                                                  = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                                                               => ( X1 = X2 ) )
                                                           => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                                                  ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                                                    = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                                                                 => ( X3 = X4 ) )
                                                             => ( ! [X1: subst > term > term] :
                                                                    ( ! [X2: subst,X3: term,X4: subst] :
                                                                        ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                                        = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                                   => ! [X2: subst > term > term] :
                                                                        ( ! [X3: subst,X4: term,X5: subst] :
                                                                            ( ( sub @ ( X2 @ X3 @ X4 ) @ X5 )
                                                                            = ( X2 @ ( comp @ X3 @ X5 ) @ ( sub @ X4 @ X5 ) ) )
                                                                       => ( ( ( lam @ ( X1 @ sh @ one ) )
                                                                            = ( lam @ ( X2 @ sh @ one ) ) )
                                                                         => ! [X3: subst,X4: term] :
                                                                              ( ( X1 @ X3 @ X4 )
                                                                              = ( X2 @ X3 @ X4 ) ) ) ) )
                                                               => ( ! [X1: subst > term > term] :
                                                                      ( ! [X2: subst,X3: term,X4: subst] :
                                                                          ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                                          = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                                     => ! [X2: term,X3: term] :
                                                                          ( ( lam @ ( X1 @ sh @ one ) )
                                                                         != ( ap @ ( sub @ X2 @ id ) @ X3 ) ) )
                                                                 => ( ! [X1: subst > term > term] :
                                                                        ( ! [X2: subst,X3: term,X4: subst] :
                                                                            ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                                            = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                                       => ~ ( var @ ( sub @ ( lam @ ( X1 @ sh @ one ) ) @ id ) ) )
                                                                   => ! [X1: term,X2: term] :
                                                                        ~ ( var @ ( sub @ ( ap @ ( sub @ X1 @ id ) @ X2 ) @ id ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ).

thf(h0,negated_conjecture,
    ~ ( ! [X1: term,X2: term,X3: subst] :
          ( ( sub @ ( ap @ X1 @ X2 ) @ X3 )
          = ( ap @ ( sub @ X1 @ X3 ) @ ( sub @ X2 @ X3 ) ) )
     => ( ! [X1: term,X2: subst] :
            ( ( sub @ one @ ( push @ X1 @ X2 ) )
            = X1 )
       => ( sP1
         => ( ! [X1: term,X2: subst] :
                ( ( sub @ ( lam @ X1 ) @ X2 )
                = ( lam @ ( sub @ X1 @ ( push @ one @ ( comp @ X2 @ sh ) ) ) ) )
           => ( ! [X1: term,X2: subst,X3: subst] :
                  ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
                  = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) )
             => ( ! [X1: subst] :
                    ( ( comp @ id @ X1 )
                    = X1 )
               => ( ! [X1: term,X2: subst] :
                      ( ( comp @ sh @ ( push @ X1 @ X2 ) )
                      = X2 )
                 => ( ! [X1: subst,X2: subst,X3: subst] :
                        ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
                        = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
                   => ( ! [X1: term,X2: subst,X3: subst] :
                          ( ( comp @ ( push @ X1 @ X2 ) @ X3 )
                          = ( push @ ( sub @ X1 @ X3 ) @ ( comp @ X2 @ X3 ) ) )
                     => ( ! [X1: subst] :
                            ( ( comp @ X1 @ id )
                            = X1 )
                       => ( ( ( push @ one @ sh )
                            = id )
                         => ( ! [X1: subst] :
                                ( ( push @ ( sub @ one @ X1 ) @ ( comp @ sh @ X1 ) )
                                = X1 )
                           => ( ( var @ one )
                             => ( ! [X1: term] :
                                    ( ( var @ X1 )
                                   => ( var @ ( sub @ X1 @ sh ) ) )
                               => ( ! [X1: term > $o] :
                                      ( ( X1 @ one )
                                     => ( ! [X2: term] :
                                            ( ( var @ X2 )
                                           => ( ( X1 @ X2 )
                                             => ( X1 @ ( sub @ X2 @ sh ) ) ) )
                                       => ! [X2: term] :
                                            ( ( var @ X2 )
                                           => ( X1 @ X2 ) ) ) )
                                 => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                        ( ( ( ap @ X1 @ X3 )
                                          = ( ap @ X2 @ X4 ) )
                                       => ( X1 = X2 ) )
                                   => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                          ( ( ( ap @ X1 @ X3 )
                                            = ( ap @ X2 @ X4 ) )
                                         => ( X3 = X4 ) )
                                     => ( ! [X1: term,X2: term] :
                                            ( ( ( lam @ X1 )
                                              = ( lam @ X2 ) )
                                           => ( X1 = X2 ) )
                                       => ( ! [X1: term,X2: term] :
                                              ( ( ( sub @ X1 @ sh )
                                                = ( sub @ X2 @ sh ) )
                                             => ( X1 = X2 ) )
                                         => ( ! [X1: term,X2: term,X3: term] :
                                                ( ( lam @ X1 )
                                               != ( ap @ X2 @ X3 ) )
                                           => ( sP4
                                             => ( ! [X1: term] :
                                                    ~ ( var @ ( lam @ X1 ) )
                                               => ( ! [X1: term > $o] :
                                                      ( ! [X2: term] :
                                                          ( ( var @ X2 )
                                                         => ( X1 @ X2 ) )
                                                     => ( ! [X2: term,X3: term] :
                                                            ( ( X1 @ X2 )
                                                           => ( ( X1 @ X3 )
                                                             => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                                       => ( ! [X2: term] :
                                                              ( ( X1 @ X2 )
                                                             => ( X1 @ ( lam @ X2 ) ) )
                                                         => ! [X2: term] : ( X1 @ X2 ) ) ) )
                                                 => ( ! [X1: term > $o,X2: term,X3: subst] :
                                                        ( ! [X4: term] :
                                                            ( ( var @ X4 )
                                                           => ( X1 @ ( sub @ X4 @ X3 ) ) )
                                                       => ( ( X1 @ X2 )
                                                         => ! [X4: term] :
                                                              ( ( var @ X4 )
                                                             => ( X1 @ ( sub @ X4 @ ( push @ X2 @ X3 ) ) ) ) ) )
                                                   => ( ! [X1: term > $o] :
                                                          ( ! [X2: term,X3: term] :
                                                              ( ( X1 @ X2 )
                                                             => ( ( X1 @ X3 )
                                                               => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                                         => ( ! [X2: term] :
                                                                ( ! [X3: term] :
                                                                    ( ( X1 @ X3 )
                                                                   => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                                                               => ( X1 @ ( lam @ X2 ) ) )
                                                           => ! [X2: term,X3: subst] :
                                                                ( ! [X4: term] :
                                                                    ( ( var @ X4 )
                                                                   => ( X1 @ ( sub @ X4 @ X3 ) ) )
                                                               => ( X1 @ ( sub @ X2 @ X3 ) ) ) ) )
                                                     => ( ! [X1: term > $o] :
                                                            ( ! [X2: term] :
                                                                ( ( var @ X2 )
                                                               => ( X1 @ X2 ) )
                                                           => ( ! [X2: term,X3: term] :
                                                                  ( ( X1 @ X2 )
                                                                 => ( ( X1 @ X3 )
                                                                   => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                                             => ( ! [X2: term] :
                                                                    ( ! [X3: term] :
                                                                        ( ( X1 @ X3 )
                                                                       => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                                                                   => ( X1 @ ( lam @ X2 ) ) )
                                                               => ! [X2: term] : ( X1 @ X2 ) ) ) )
                                                       => ( ~ ( ~ ( ! [X1: subst,X2: subst,X3: subst] :
                                                                      ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
                                                                      = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
                                                                 => ~ ! [X1: subst] :
                                                                        ( ( comp @ id @ X1 )
                                                                        = X1 ) )
                                                             => ~ ! [X1: subst] :
                                                                    ( ( comp @ X1 @ id )
                                                                    = X1 ) )
                                                         => ( ~ ( ! [X1: term,X2: subst,X3: subst] :
                                                                    ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
                                                                    = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) )
                                                               => ~ sP1 )
                                                           => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                                                  ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                                                    = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                                                                 => ( X1 = X2 ) )
                                                             => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                                                    ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                                                      = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                                                                   => ( X3 = X4 ) )
                                                               => ( ! [X1: subst > term > term] :
                                                                      ( ! [X2: subst,X3: term,X4: subst] :
                                                                          ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                                          = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                                     => ! [X2: subst > term > term] :
                                                                          ( ! [X3: subst,X4: term,X5: subst] :
                                                                              ( ( sub @ ( X2 @ X3 @ X4 ) @ X5 )
                                                                              = ( X2 @ ( comp @ X3 @ X5 ) @ ( sub @ X4 @ X5 ) ) )
                                                                         => ( ( ( lam @ ( X1 @ sh @ one ) )
                                                                              = ( lam @ ( X2 @ sh @ one ) ) )
                                                                           => ! [X3: subst,X4: term] :
                                                                                ( ( X1 @ X3 @ X4 )
                                                                                = ( X2 @ X3 @ X4 ) ) ) ) )
                                                                 => ( ! [X1: subst > term > term] :
                                                                        ( ! [X2: subst,X3: term,X4: subst] :
                                                                            ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                                            = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                                       => ! [X2: term,X3: term] :
                                                                            ( ( lam @ ( X1 @ sh @ one ) )
                                                                           != ( ap @ ( sub @ X2 @ id ) @ X3 ) ) )
                                                                   => ( ! [X1: subst > term > term] :
                                                                          ( ! [X2: subst,X3: term,X4: subst] :
                                                                              ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                                              = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                                         => ~ ( var @ ( sub @ ( lam @ ( X1 @ sh @ one ) ) @ id ) ) )
                                                                     => ! [X1: term,X2: term] :
                                                                          ~ ( var @ ( sub @ ( ap @ ( sub @ X1 @ id ) @ X2 ) @ id ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ),
    inference(assume_negation,[status(cth)],[thm]) ).

thf(h1,assumption,
    ! [X1: term,X2: term,X3: subst] :
      ( ( sub @ ( ap @ X1 @ X2 ) @ X3 )
      = ( ap @ ( sub @ X1 @ X3 ) @ ( sub @ X2 @ X3 ) ) ),
    introduced(assumption,[]) ).

thf(h2,assumption,
    ~ ( ! [X1: term,X2: subst] :
          ( ( sub @ one @ ( push @ X1 @ X2 ) )
          = X1 )
     => ( sP1
       => ( ! [X1: term,X2: subst] :
              ( ( sub @ ( lam @ X1 ) @ X2 )
              = ( lam @ ( sub @ X1 @ ( push @ one @ ( comp @ X2 @ sh ) ) ) ) )
         => ( ! [X1: term,X2: subst,X3: subst] :
                ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
                = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) )
           => ( ! [X1: subst] :
                  ( ( comp @ id @ X1 )
                  = X1 )
             => ( ! [X1: term,X2: subst] :
                    ( ( comp @ sh @ ( push @ X1 @ X2 ) )
                    = X2 )
               => ( ! [X1: subst,X2: subst,X3: subst] :
                      ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
                      = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
                 => ( ! [X1: term,X2: subst,X3: subst] :
                        ( ( comp @ ( push @ X1 @ X2 ) @ X3 )
                        = ( push @ ( sub @ X1 @ X3 ) @ ( comp @ X2 @ X3 ) ) )
                   => ( ! [X1: subst] :
                          ( ( comp @ X1 @ id )
                          = X1 )
                     => ( ( ( push @ one @ sh )
                          = id )
                       => ( ! [X1: subst] :
                              ( ( push @ ( sub @ one @ X1 ) @ ( comp @ sh @ X1 ) )
                              = X1 )
                         => ( ( var @ one )
                           => ( ! [X1: term] :
                                  ( ( var @ X1 )
                                 => ( var @ ( sub @ X1 @ sh ) ) )
                             => ( ! [X1: term > $o] :
                                    ( ( X1 @ one )
                                   => ( ! [X2: term] :
                                          ( ( var @ X2 )
                                         => ( ( X1 @ X2 )
                                           => ( X1 @ ( sub @ X2 @ sh ) ) ) )
                                     => ! [X2: term] :
                                          ( ( var @ X2 )
                                         => ( X1 @ X2 ) ) ) )
                               => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                      ( ( ( ap @ X1 @ X3 )
                                        = ( ap @ X2 @ X4 ) )
                                     => ( X1 = X2 ) )
                                 => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                        ( ( ( ap @ X1 @ X3 )
                                          = ( ap @ X2 @ X4 ) )
                                       => ( X3 = X4 ) )
                                   => ( ! [X1: term,X2: term] :
                                          ( ( ( lam @ X1 )
                                            = ( lam @ X2 ) )
                                         => ( X1 = X2 ) )
                                     => ( ! [X1: term,X2: term] :
                                            ( ( ( sub @ X1 @ sh )
                                              = ( sub @ X2 @ sh ) )
                                           => ( X1 = X2 ) )
                                       => ( ! [X1: term,X2: term,X3: term] :
                                              ( ( lam @ X1 )
                                             != ( ap @ X2 @ X3 ) )
                                         => ( sP4
                                           => ( ! [X1: term] :
                                                  ~ ( var @ ( lam @ X1 ) )
                                             => ( ! [X1: term > $o] :
                                                    ( ! [X2: term] :
                                                        ( ( var @ X2 )
                                                       => ( X1 @ X2 ) )
                                                   => ( ! [X2: term,X3: term] :
                                                          ( ( X1 @ X2 )
                                                         => ( ( X1 @ X3 )
                                                           => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                                     => ( ! [X2: term] :
                                                            ( ( X1 @ X2 )
                                                           => ( X1 @ ( lam @ X2 ) ) )
                                                       => ! [X2: term] : ( X1 @ X2 ) ) ) )
                                               => ( ! [X1: term > $o,X2: term,X3: subst] :
                                                      ( ! [X4: term] :
                                                          ( ( var @ X4 )
                                                         => ( X1 @ ( sub @ X4 @ X3 ) ) )
                                                     => ( ( X1 @ X2 )
                                                       => ! [X4: term] :
                                                            ( ( var @ X4 )
                                                           => ( X1 @ ( sub @ X4 @ ( push @ X2 @ X3 ) ) ) ) ) )
                                                 => ( ! [X1: term > $o] :
                                                        ( ! [X2: term,X3: term] :
                                                            ( ( X1 @ X2 )
                                                           => ( ( X1 @ X3 )
                                                             => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                                       => ( ! [X2: term] :
                                                              ( ! [X3: term] :
                                                                  ( ( X1 @ X3 )
                                                                 => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                                                             => ( X1 @ ( lam @ X2 ) ) )
                                                         => ! [X2: term,X3: subst] :
                                                              ( ! [X4: term] :
                                                                  ( ( var @ X4 )
                                                                 => ( X1 @ ( sub @ X4 @ X3 ) ) )
                                                             => ( X1 @ ( sub @ X2 @ X3 ) ) ) ) )
                                                   => ( ! [X1: term > $o] :
                                                          ( ! [X2: term] :
                                                              ( ( var @ X2 )
                                                             => ( X1 @ X2 ) )
                                                         => ( ! [X2: term,X3: term] :
                                                                ( ( X1 @ X2 )
                                                               => ( ( X1 @ X3 )
                                                                 => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                                           => ( ! [X2: term] :
                                                                  ( ! [X3: term] :
                                                                      ( ( X1 @ X3 )
                                                                     => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                                                                 => ( X1 @ ( lam @ X2 ) ) )
                                                             => ! [X2: term] : ( X1 @ X2 ) ) ) )
                                                     => ( ~ ( ~ ( ! [X1: subst,X2: subst,X3: subst] :
                                                                    ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
                                                                    = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
                                                               => ~ ! [X1: subst] :
                                                                      ( ( comp @ id @ X1 )
                                                                      = X1 ) )
                                                           => ~ ! [X1: subst] :
                                                                  ( ( comp @ X1 @ id )
                                                                  = X1 ) )
                                                       => ( ~ ( ! [X1: term,X2: subst,X3: subst] :
                                                                  ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
                                                                  = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) )
                                                             => ~ sP1 )
                                                         => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                                                ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                                                  = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                                                               => ( X1 = X2 ) )
                                                           => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                                                  ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                                                    = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                                                                 => ( X3 = X4 ) )
                                                             => ( ! [X1: subst > term > term] :
                                                                    ( ! [X2: subst,X3: term,X4: subst] :
                                                                        ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                                        = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                                   => ! [X2: subst > term > term] :
                                                                        ( ! [X3: subst,X4: term,X5: subst] :
                                                                            ( ( sub @ ( X2 @ X3 @ X4 ) @ X5 )
                                                                            = ( X2 @ ( comp @ X3 @ X5 ) @ ( sub @ X4 @ X5 ) ) )
                                                                       => ( ( ( lam @ ( X1 @ sh @ one ) )
                                                                            = ( lam @ ( X2 @ sh @ one ) ) )
                                                                         => ! [X3: subst,X4: term] :
                                                                              ( ( X1 @ X3 @ X4 )
                                                                              = ( X2 @ X3 @ X4 ) ) ) ) )
                                                               => ( ! [X1: subst > term > term] :
                                                                      ( ! [X2: subst,X3: term,X4: subst] :
                                                                          ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                                          = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                                     => ! [X2: term,X3: term] :
                                                                          ( ( lam @ ( X1 @ sh @ one ) )
                                                                         != ( ap @ ( sub @ X2 @ id ) @ X3 ) ) )
                                                                 => ( ! [X1: subst > term > term] :
                                                                        ( ! [X2: subst,X3: term,X4: subst] :
                                                                            ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                                            = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                                       => ~ ( var @ ( sub @ ( lam @ ( X1 @ sh @ one ) ) @ id ) ) )
                                                                   => ! [X1: term,X2: term] :
                                                                        ~ ( var @ ( sub @ ( ap @ ( sub @ X1 @ id ) @ X2 ) @ id ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ),
    introduced(assumption,[]) ).

thf(h3,assumption,
    ! [X1: term,X2: subst] :
      ( ( sub @ one @ ( push @ X1 @ X2 ) )
      = X1 ),
    introduced(assumption,[]) ).

thf(h4,assumption,
    ~ ( sP1
     => ( ! [X1: term,X2: subst] :
            ( ( sub @ ( lam @ X1 ) @ X2 )
            = ( lam @ ( sub @ X1 @ ( push @ one @ ( comp @ X2 @ sh ) ) ) ) )
       => ( ! [X1: term,X2: subst,X3: subst] :
              ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
              = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) )
         => ( ! [X1: subst] :
                ( ( comp @ id @ X1 )
                = X1 )
           => ( ! [X1: term,X2: subst] :
                  ( ( comp @ sh @ ( push @ X1 @ X2 ) )
                  = X2 )
             => ( ! [X1: subst,X2: subst,X3: subst] :
                    ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
                    = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
               => ( ! [X1: term,X2: subst,X3: subst] :
                      ( ( comp @ ( push @ X1 @ X2 ) @ X3 )
                      = ( push @ ( sub @ X1 @ X3 ) @ ( comp @ X2 @ X3 ) ) )
                 => ( ! [X1: subst] :
                        ( ( comp @ X1 @ id )
                        = X1 )
                   => ( ( ( push @ one @ sh )
                        = id )
                     => ( ! [X1: subst] :
                            ( ( push @ ( sub @ one @ X1 ) @ ( comp @ sh @ X1 ) )
                            = X1 )
                       => ( ( var @ one )
                         => ( ! [X1: term] :
                                ( ( var @ X1 )
                               => ( var @ ( sub @ X1 @ sh ) ) )
                           => ( ! [X1: term > $o] :
                                  ( ( X1 @ one )
                                 => ( ! [X2: term] :
                                        ( ( var @ X2 )
                                       => ( ( X1 @ X2 )
                                         => ( X1 @ ( sub @ X2 @ sh ) ) ) )
                                   => ! [X2: term] :
                                        ( ( var @ X2 )
                                       => ( X1 @ X2 ) ) ) )
                             => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                    ( ( ( ap @ X1 @ X3 )
                                      = ( ap @ X2 @ X4 ) )
                                   => ( X1 = X2 ) )
                               => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                      ( ( ( ap @ X1 @ X3 )
                                        = ( ap @ X2 @ X4 ) )
                                     => ( X3 = X4 ) )
                                 => ( ! [X1: term,X2: term] :
                                        ( ( ( lam @ X1 )
                                          = ( lam @ X2 ) )
                                       => ( X1 = X2 ) )
                                   => ( ! [X1: term,X2: term] :
                                          ( ( ( sub @ X1 @ sh )
                                            = ( sub @ X2 @ sh ) )
                                         => ( X1 = X2 ) )
                                     => ( ! [X1: term,X2: term,X3: term] :
                                            ( ( lam @ X1 )
                                           != ( ap @ X2 @ X3 ) )
                                       => ( sP4
                                         => ( ! [X1: term] :
                                                ~ ( var @ ( lam @ X1 ) )
                                           => ( ! [X1: term > $o] :
                                                  ( ! [X2: term] :
                                                      ( ( var @ X2 )
                                                     => ( X1 @ X2 ) )
                                                 => ( ! [X2: term,X3: term] :
                                                        ( ( X1 @ X2 )
                                                       => ( ( X1 @ X3 )
                                                         => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                                   => ( ! [X2: term] :
                                                          ( ( X1 @ X2 )
                                                         => ( X1 @ ( lam @ X2 ) ) )
                                                     => ! [X2: term] : ( X1 @ X2 ) ) ) )
                                             => ( ! [X1: term > $o,X2: term,X3: subst] :
                                                    ( ! [X4: term] :
                                                        ( ( var @ X4 )
                                                       => ( X1 @ ( sub @ X4 @ X3 ) ) )
                                                   => ( ( X1 @ X2 )
                                                     => ! [X4: term] :
                                                          ( ( var @ X4 )
                                                         => ( X1 @ ( sub @ X4 @ ( push @ X2 @ X3 ) ) ) ) ) )
                                               => ( ! [X1: term > $o] :
                                                      ( ! [X2: term,X3: term] :
                                                          ( ( X1 @ X2 )
                                                         => ( ( X1 @ X3 )
                                                           => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                                     => ( ! [X2: term] :
                                                            ( ! [X3: term] :
                                                                ( ( X1 @ X3 )
                                                               => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                                                           => ( X1 @ ( lam @ X2 ) ) )
                                                       => ! [X2: term,X3: subst] :
                                                            ( ! [X4: term] :
                                                                ( ( var @ X4 )
                                                               => ( X1 @ ( sub @ X4 @ X3 ) ) )
                                                           => ( X1 @ ( sub @ X2 @ X3 ) ) ) ) )
                                                 => ( ! [X1: term > $o] :
                                                        ( ! [X2: term] :
                                                            ( ( var @ X2 )
                                                           => ( X1 @ X2 ) )
                                                       => ( ! [X2: term,X3: term] :
                                                              ( ( X1 @ X2 )
                                                             => ( ( X1 @ X3 )
                                                               => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                                         => ( ! [X2: term] :
                                                                ( ! [X3: term] :
                                                                    ( ( X1 @ X3 )
                                                                   => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                                                               => ( X1 @ ( lam @ X2 ) ) )
                                                           => ! [X2: term] : ( X1 @ X2 ) ) ) )
                                                   => ( ~ ( ~ ( ! [X1: subst,X2: subst,X3: subst] :
                                                                  ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
                                                                  = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
                                                             => ~ ! [X1: subst] :
                                                                    ( ( comp @ id @ X1 )
                                                                    = X1 ) )
                                                         => ~ ! [X1: subst] :
                                                                ( ( comp @ X1 @ id )
                                                                = X1 ) )
                                                     => ( ~ ( ! [X1: term,X2: subst,X3: subst] :
                                                                ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
                                                                = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) )
                                                           => ~ sP1 )
                                                       => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                                              ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                                                = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                                                             => ( X1 = X2 ) )
                                                         => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                                                ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                                                  = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                                                               => ( X3 = X4 ) )
                                                           => ( ! [X1: subst > term > term] :
                                                                  ( ! [X2: subst,X3: term,X4: subst] :
                                                                      ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                                      = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                                 => ! [X2: subst > term > term] :
                                                                      ( ! [X3: subst,X4: term,X5: subst] :
                                                                          ( ( sub @ ( X2 @ X3 @ X4 ) @ X5 )
                                                                          = ( X2 @ ( comp @ X3 @ X5 ) @ ( sub @ X4 @ X5 ) ) )
                                                                     => ( ( ( lam @ ( X1 @ sh @ one ) )
                                                                          = ( lam @ ( X2 @ sh @ one ) ) )
                                                                       => ! [X3: subst,X4: term] :
                                                                            ( ( X1 @ X3 @ X4 )
                                                                            = ( X2 @ X3 @ X4 ) ) ) ) )
                                                             => ( ! [X1: subst > term > term] :
                                                                    ( ! [X2: subst,X3: term,X4: subst] :
                                                                        ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                                        = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                                   => ! [X2: term,X3: term] :
                                                                        ( ( lam @ ( X1 @ sh @ one ) )
                                                                       != ( ap @ ( sub @ X2 @ id ) @ X3 ) ) )
                                                               => ( ! [X1: subst > term > term] :
                                                                      ( ! [X2: subst,X3: term,X4: subst] :
                                                                          ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                                          = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                                     => ~ ( var @ ( sub @ ( lam @ ( X1 @ sh @ one ) ) @ id ) ) )
                                                                 => ! [X1: term,X2: term] :
                                                                      ~ ( var @ ( sub @ ( ap @ ( sub @ X1 @ id ) @ X2 ) @ id ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ),
    introduced(assumption,[]) ).

thf(h5,assumption,
    sP1,
    introduced(assumption,[]) ).

thf(h6,assumption,
    ~ ( ! [X1: term,X2: subst] :
          ( ( sub @ ( lam @ X1 ) @ X2 )
          = ( lam @ ( sub @ X1 @ ( push @ one @ ( comp @ X2 @ sh ) ) ) ) )
     => ( ! [X1: term,X2: subst,X3: subst] :
            ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
            = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) )
       => ( ! [X1: subst] :
              ( ( comp @ id @ X1 )
              = X1 )
         => ( ! [X1: term,X2: subst] :
                ( ( comp @ sh @ ( push @ X1 @ X2 ) )
                = X2 )
           => ( ! [X1: subst,X2: subst,X3: subst] :
                  ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
                  = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
             => ( ! [X1: term,X2: subst,X3: subst] :
                    ( ( comp @ ( push @ X1 @ X2 ) @ X3 )
                    = ( push @ ( sub @ X1 @ X3 ) @ ( comp @ X2 @ X3 ) ) )
               => ( ! [X1: subst] :
                      ( ( comp @ X1 @ id )
                      = X1 )
                 => ( ( ( push @ one @ sh )
                      = id )
                   => ( ! [X1: subst] :
                          ( ( push @ ( sub @ one @ X1 ) @ ( comp @ sh @ X1 ) )
                          = X1 )
                     => ( ( var @ one )
                       => ( ! [X1: term] :
                              ( ( var @ X1 )
                             => ( var @ ( sub @ X1 @ sh ) ) )
                         => ( ! [X1: term > $o] :
                                ( ( X1 @ one )
                               => ( ! [X2: term] :
                                      ( ( var @ X2 )
                                     => ( ( X1 @ X2 )
                                       => ( X1 @ ( sub @ X2 @ sh ) ) ) )
                                 => ! [X2: term] :
                                      ( ( var @ X2 )
                                     => ( X1 @ X2 ) ) ) )
                           => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                  ( ( ( ap @ X1 @ X3 )
                                    = ( ap @ X2 @ X4 ) )
                                 => ( X1 = X2 ) )
                             => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                    ( ( ( ap @ X1 @ X3 )
                                      = ( ap @ X2 @ X4 ) )
                                   => ( X3 = X4 ) )
                               => ( ! [X1: term,X2: term] :
                                      ( ( ( lam @ X1 )
                                        = ( lam @ X2 ) )
                                     => ( X1 = X2 ) )
                                 => ( ! [X1: term,X2: term] :
                                        ( ( ( sub @ X1 @ sh )
                                          = ( sub @ X2 @ sh ) )
                                       => ( X1 = X2 ) )
                                   => ( ! [X1: term,X2: term,X3: term] :
                                          ( ( lam @ X1 )
                                         != ( ap @ X2 @ X3 ) )
                                     => ( sP4
                                       => ( ! [X1: term] :
                                              ~ ( var @ ( lam @ X1 ) )
                                         => ( ! [X1: term > $o] :
                                                ( ! [X2: term] :
                                                    ( ( var @ X2 )
                                                   => ( X1 @ X2 ) )
                                               => ( ! [X2: term,X3: term] :
                                                      ( ( X1 @ X2 )
                                                     => ( ( X1 @ X3 )
                                                       => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                                 => ( ! [X2: term] :
                                                        ( ( X1 @ X2 )
                                                       => ( X1 @ ( lam @ X2 ) ) )
                                                   => ! [X2: term] : ( X1 @ X2 ) ) ) )
                                           => ( ! [X1: term > $o,X2: term,X3: subst] :
                                                  ( ! [X4: term] :
                                                      ( ( var @ X4 )
                                                     => ( X1 @ ( sub @ X4 @ X3 ) ) )
                                                 => ( ( X1 @ X2 )
                                                   => ! [X4: term] :
                                                        ( ( var @ X4 )
                                                       => ( X1 @ ( sub @ X4 @ ( push @ X2 @ X3 ) ) ) ) ) )
                                             => ( ! [X1: term > $o] :
                                                    ( ! [X2: term,X3: term] :
                                                        ( ( X1 @ X2 )
                                                       => ( ( X1 @ X3 )
                                                         => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                                   => ( ! [X2: term] :
                                                          ( ! [X3: term] :
                                                              ( ( X1 @ X3 )
                                                             => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                                                         => ( X1 @ ( lam @ X2 ) ) )
                                                     => ! [X2: term,X3: subst] :
                                                          ( ! [X4: term] :
                                                              ( ( var @ X4 )
                                                             => ( X1 @ ( sub @ X4 @ X3 ) ) )
                                                         => ( X1 @ ( sub @ X2 @ X3 ) ) ) ) )
                                               => ( ! [X1: term > $o] :
                                                      ( ! [X2: term] :
                                                          ( ( var @ X2 )
                                                         => ( X1 @ X2 ) )
                                                     => ( ! [X2: term,X3: term] :
                                                            ( ( X1 @ X2 )
                                                           => ( ( X1 @ X3 )
                                                             => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                                       => ( ! [X2: term] :
                                                              ( ! [X3: term] :
                                                                  ( ( X1 @ X3 )
                                                                 => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                                                             => ( X1 @ ( lam @ X2 ) ) )
                                                         => ! [X2: term] : ( X1 @ X2 ) ) ) )
                                                 => ( ~ ( ~ ( ! [X1: subst,X2: subst,X3: subst] :
                                                                ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
                                                                = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
                                                           => ~ ! [X1: subst] :
                                                                  ( ( comp @ id @ X1 )
                                                                  = X1 ) )
                                                       => ~ ! [X1: subst] :
                                                              ( ( comp @ X1 @ id )
                                                              = X1 ) )
                                                   => ( ~ ( ! [X1: term,X2: subst,X3: subst] :
                                                              ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
                                                              = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) )
                                                         => ~ sP1 )
                                                     => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                                            ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                                              = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                                                           => ( X1 = X2 ) )
                                                       => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                                              ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                                                = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                                                             => ( X3 = X4 ) )
                                                         => ( ! [X1: subst > term > term] :
                                                                ( ! [X2: subst,X3: term,X4: subst] :
                                                                    ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                                    = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                               => ! [X2: subst > term > term] :
                                                                    ( ! [X3: subst,X4: term,X5: subst] :
                                                                        ( ( sub @ ( X2 @ X3 @ X4 ) @ X5 )
                                                                        = ( X2 @ ( comp @ X3 @ X5 ) @ ( sub @ X4 @ X5 ) ) )
                                                                   => ( ( ( lam @ ( X1 @ sh @ one ) )
                                                                        = ( lam @ ( X2 @ sh @ one ) ) )
                                                                     => ! [X3: subst,X4: term] :
                                                                          ( ( X1 @ X3 @ X4 )
                                                                          = ( X2 @ X3 @ X4 ) ) ) ) )
                                                           => ( ! [X1: subst > term > term] :
                                                                  ( ! [X2: subst,X3: term,X4: subst] :
                                                                      ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                                      = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                                 => ! [X2: term,X3: term] :
                                                                      ( ( lam @ ( X1 @ sh @ one ) )
                                                                     != ( ap @ ( sub @ X2 @ id ) @ X3 ) ) )
                                                             => ( ! [X1: subst > term > term] :
                                                                    ( ! [X2: subst,X3: term,X4: subst] :
                                                                        ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                                        = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                                   => ~ ( var @ ( sub @ ( lam @ ( X1 @ sh @ one ) ) @ id ) ) )
                                                               => ! [X1: term,X2: term] :
                                                                    ~ ( var @ ( sub @ ( ap @ ( sub @ X1 @ id ) @ X2 ) @ id ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ),
    introduced(assumption,[]) ).

thf(h7,assumption,
    ! [X1: term,X2: subst] :
      ( ( sub @ ( lam @ X1 ) @ X2 )
      = ( lam @ ( sub @ X1 @ ( push @ one @ ( comp @ X2 @ sh ) ) ) ) ),
    introduced(assumption,[]) ).

thf(h8,assumption,
    ~ ( ! [X1: term,X2: subst,X3: subst] :
          ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
          = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) )
     => ( ! [X1: subst] :
            ( ( comp @ id @ X1 )
            = X1 )
       => ( ! [X1: term,X2: subst] :
              ( ( comp @ sh @ ( push @ X1 @ X2 ) )
              = X2 )
         => ( ! [X1: subst,X2: subst,X3: subst] :
                ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
                = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
           => ( ! [X1: term,X2: subst,X3: subst] :
                  ( ( comp @ ( push @ X1 @ X2 ) @ X3 )
                  = ( push @ ( sub @ X1 @ X3 ) @ ( comp @ X2 @ X3 ) ) )
             => ( ! [X1: subst] :
                    ( ( comp @ X1 @ id )
                    = X1 )
               => ( ( ( push @ one @ sh )
                    = id )
                 => ( ! [X1: subst] :
                        ( ( push @ ( sub @ one @ X1 ) @ ( comp @ sh @ X1 ) )
                        = X1 )
                   => ( ( var @ one )
                     => ( ! [X1: term] :
                            ( ( var @ X1 )
                           => ( var @ ( sub @ X1 @ sh ) ) )
                       => ( ! [X1: term > $o] :
                              ( ( X1 @ one )
                             => ( ! [X2: term] :
                                    ( ( var @ X2 )
                                   => ( ( X1 @ X2 )
                                     => ( X1 @ ( sub @ X2 @ sh ) ) ) )
                               => ! [X2: term] :
                                    ( ( var @ X2 )
                                   => ( X1 @ X2 ) ) ) )
                         => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                ( ( ( ap @ X1 @ X3 )
                                  = ( ap @ X2 @ X4 ) )
                               => ( X1 = X2 ) )
                           => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                  ( ( ( ap @ X1 @ X3 )
                                    = ( ap @ X2 @ X4 ) )
                                 => ( X3 = X4 ) )
                             => ( ! [X1: term,X2: term] :
                                    ( ( ( lam @ X1 )
                                      = ( lam @ X2 ) )
                                   => ( X1 = X2 ) )
                               => ( ! [X1: term,X2: term] :
                                      ( ( ( sub @ X1 @ sh )
                                        = ( sub @ X2 @ sh ) )
                                     => ( X1 = X2 ) )
                                 => ( ! [X1: term,X2: term,X3: term] :
                                        ( ( lam @ X1 )
                                       != ( ap @ X2 @ X3 ) )
                                   => ( sP4
                                     => ( ! [X1: term] :
                                            ~ ( var @ ( lam @ X1 ) )
                                       => ( ! [X1: term > $o] :
                                              ( ! [X2: term] :
                                                  ( ( var @ X2 )
                                                 => ( X1 @ X2 ) )
                                             => ( ! [X2: term,X3: term] :
                                                    ( ( X1 @ X2 )
                                                   => ( ( X1 @ X3 )
                                                     => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                               => ( ! [X2: term] :
                                                      ( ( X1 @ X2 )
                                                     => ( X1 @ ( lam @ X2 ) ) )
                                                 => ! [X2: term] : ( X1 @ X2 ) ) ) )
                                         => ( ! [X1: term > $o,X2: term,X3: subst] :
                                                ( ! [X4: term] :
                                                    ( ( var @ X4 )
                                                   => ( X1 @ ( sub @ X4 @ X3 ) ) )
                                               => ( ( X1 @ X2 )
                                                 => ! [X4: term] :
                                                      ( ( var @ X4 )
                                                     => ( X1 @ ( sub @ X4 @ ( push @ X2 @ X3 ) ) ) ) ) )
                                           => ( ! [X1: term > $o] :
                                                  ( ! [X2: term,X3: term] :
                                                      ( ( X1 @ X2 )
                                                     => ( ( X1 @ X3 )
                                                       => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                                 => ( ! [X2: term] :
                                                        ( ! [X3: term] :
                                                            ( ( X1 @ X3 )
                                                           => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                                                       => ( X1 @ ( lam @ X2 ) ) )
                                                   => ! [X2: term,X3: subst] :
                                                        ( ! [X4: term] :
                                                            ( ( var @ X4 )
                                                           => ( X1 @ ( sub @ X4 @ X3 ) ) )
                                                       => ( X1 @ ( sub @ X2 @ X3 ) ) ) ) )
                                             => ( ! [X1: term > $o] :
                                                    ( ! [X2: term] :
                                                        ( ( var @ X2 )
                                                       => ( X1 @ X2 ) )
                                                   => ( ! [X2: term,X3: term] :
                                                          ( ( X1 @ X2 )
                                                         => ( ( X1 @ X3 )
                                                           => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                                     => ( ! [X2: term] :
                                                            ( ! [X3: term] :
                                                                ( ( X1 @ X3 )
                                                               => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                                                           => ( X1 @ ( lam @ X2 ) ) )
                                                       => ! [X2: term] : ( X1 @ X2 ) ) ) )
                                               => ( ~ ( ~ ( ! [X1: subst,X2: subst,X3: subst] :
                                                              ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
                                                              = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
                                                         => ~ ! [X1: subst] :
                                                                ( ( comp @ id @ X1 )
                                                                = X1 ) )
                                                     => ~ ! [X1: subst] :
                                                            ( ( comp @ X1 @ id )
                                                            = X1 ) )
                                                 => ( ~ ( ! [X1: term,X2: subst,X3: subst] :
                                                            ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
                                                            = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) )
                                                       => ~ sP1 )
                                                   => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                                          ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                                            = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                                                         => ( X1 = X2 ) )
                                                     => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                                            ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                                              = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                                                           => ( X3 = X4 ) )
                                                       => ( ! [X1: subst > term > term] :
                                                              ( ! [X2: subst,X3: term,X4: subst] :
                                                                  ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                                  = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                             => ! [X2: subst > term > term] :
                                                                  ( ! [X3: subst,X4: term,X5: subst] :
                                                                      ( ( sub @ ( X2 @ X3 @ X4 ) @ X5 )
                                                                      = ( X2 @ ( comp @ X3 @ X5 ) @ ( sub @ X4 @ X5 ) ) )
                                                                 => ( ( ( lam @ ( X1 @ sh @ one ) )
                                                                      = ( lam @ ( X2 @ sh @ one ) ) )
                                                                   => ! [X3: subst,X4: term] :
                                                                        ( ( X1 @ X3 @ X4 )
                                                                        = ( X2 @ X3 @ X4 ) ) ) ) )
                                                         => ( ! [X1: subst > term > term] :
                                                                ( ! [X2: subst,X3: term,X4: subst] :
                                                                    ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                                    = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                               => ! [X2: term,X3: term] :
                                                                    ( ( lam @ ( X1 @ sh @ one ) )
                                                                   != ( ap @ ( sub @ X2 @ id ) @ X3 ) ) )
                                                           => ( ! [X1: subst > term > term] :
                                                                  ( ! [X2: subst,X3: term,X4: subst] :
                                                                      ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                                      = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                                 => ~ ( var @ ( sub @ ( lam @ ( X1 @ sh @ one ) ) @ id ) ) )
                                                             => ! [X1: term,X2: term] :
                                                                  ~ ( var @ ( sub @ ( ap @ ( sub @ X1 @ id ) @ X2 ) @ id ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ),
    introduced(assumption,[]) ).

thf(h9,assumption,
    ! [X1: term,X2: subst,X3: subst] :
      ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
      = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) ),
    introduced(assumption,[]) ).

thf(h10,assumption,
    ~ ( ! [X1: subst] :
          ( ( comp @ id @ X1 )
          = X1 )
     => ( ! [X1: term,X2: subst] :
            ( ( comp @ sh @ ( push @ X1 @ X2 ) )
            = X2 )
       => ( ! [X1: subst,X2: subst,X3: subst] :
              ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
              = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
         => ( ! [X1: term,X2: subst,X3: subst] :
                ( ( comp @ ( push @ X1 @ X2 ) @ X3 )
                = ( push @ ( sub @ X1 @ X3 ) @ ( comp @ X2 @ X3 ) ) )
           => ( ! [X1: subst] :
                  ( ( comp @ X1 @ id )
                  = X1 )
             => ( ( ( push @ one @ sh )
                  = id )
               => ( ! [X1: subst] :
                      ( ( push @ ( sub @ one @ X1 ) @ ( comp @ sh @ X1 ) )
                      = X1 )
                 => ( ( var @ one )
                   => ( ! [X1: term] :
                          ( ( var @ X1 )
                         => ( var @ ( sub @ X1 @ sh ) ) )
                     => ( ! [X1: term > $o] :
                            ( ( X1 @ one )
                           => ( ! [X2: term] :
                                  ( ( var @ X2 )
                                 => ( ( X1 @ X2 )
                                   => ( X1 @ ( sub @ X2 @ sh ) ) ) )
                             => ! [X2: term] :
                                  ( ( var @ X2 )
                                 => ( X1 @ X2 ) ) ) )
                       => ( ! [X1: term,X2: term,X3: term,X4: term] :
                              ( ( ( ap @ X1 @ X3 )
                                = ( ap @ X2 @ X4 ) )
                             => ( X1 = X2 ) )
                         => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                ( ( ( ap @ X1 @ X3 )
                                  = ( ap @ X2 @ X4 ) )
                               => ( X3 = X4 ) )
                           => ( ! [X1: term,X2: term] :
                                  ( ( ( lam @ X1 )
                                    = ( lam @ X2 ) )
                                 => ( X1 = X2 ) )
                             => ( ! [X1: term,X2: term] :
                                    ( ( ( sub @ X1 @ sh )
                                      = ( sub @ X2 @ sh ) )
                                   => ( X1 = X2 ) )
                               => ( ! [X1: term,X2: term,X3: term] :
                                      ( ( lam @ X1 )
                                     != ( ap @ X2 @ X3 ) )
                                 => ( sP4
                                   => ( ! [X1: term] :
                                          ~ ( var @ ( lam @ X1 ) )
                                     => ( ! [X1: term > $o] :
                                            ( ! [X2: term] :
                                                ( ( var @ X2 )
                                               => ( X1 @ X2 ) )
                                           => ( ! [X2: term,X3: term] :
                                                  ( ( X1 @ X2 )
                                                 => ( ( X1 @ X3 )
                                                   => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                             => ( ! [X2: term] :
                                                    ( ( X1 @ X2 )
                                                   => ( X1 @ ( lam @ X2 ) ) )
                                               => ! [X2: term] : ( X1 @ X2 ) ) ) )
                                       => ( ! [X1: term > $o,X2: term,X3: subst] :
                                              ( ! [X4: term] :
                                                  ( ( var @ X4 )
                                                 => ( X1 @ ( sub @ X4 @ X3 ) ) )
                                             => ( ( X1 @ X2 )
                                               => ! [X4: term] :
                                                    ( ( var @ X4 )
                                                   => ( X1 @ ( sub @ X4 @ ( push @ X2 @ X3 ) ) ) ) ) )
                                         => ( ! [X1: term > $o] :
                                                ( ! [X2: term,X3: term] :
                                                    ( ( X1 @ X2 )
                                                   => ( ( X1 @ X3 )
                                                     => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                               => ( ! [X2: term] :
                                                      ( ! [X3: term] :
                                                          ( ( X1 @ X3 )
                                                         => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                                                     => ( X1 @ ( lam @ X2 ) ) )
                                                 => ! [X2: term,X3: subst] :
                                                      ( ! [X4: term] :
                                                          ( ( var @ X4 )
                                                         => ( X1 @ ( sub @ X4 @ X3 ) ) )
                                                     => ( X1 @ ( sub @ X2 @ X3 ) ) ) ) )
                                           => ( ! [X1: term > $o] :
                                                  ( ! [X2: term] :
                                                      ( ( var @ X2 )
                                                     => ( X1 @ X2 ) )
                                                 => ( ! [X2: term,X3: term] :
                                                        ( ( X1 @ X2 )
                                                       => ( ( X1 @ X3 )
                                                         => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                                   => ( ! [X2: term] :
                                                          ( ! [X3: term] :
                                                              ( ( X1 @ X3 )
                                                             => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                                                         => ( X1 @ ( lam @ X2 ) ) )
                                                     => ! [X2: term] : ( X1 @ X2 ) ) ) )
                                             => ( ~ ( ~ ( ! [X1: subst,X2: subst,X3: subst] :
                                                            ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
                                                            = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
                                                       => ~ ! [X1: subst] :
                                                              ( ( comp @ id @ X1 )
                                                              = X1 ) )
                                                   => ~ ! [X1: subst] :
                                                          ( ( comp @ X1 @ id )
                                                          = X1 ) )
                                               => ( ~ ( ! [X1: term,X2: subst,X3: subst] :
                                                          ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
                                                          = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) )
                                                     => ~ sP1 )
                                                 => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                                        ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                                          = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                                                       => ( X1 = X2 ) )
                                                   => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                                          ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                                            = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                                                         => ( X3 = X4 ) )
                                                     => ( ! [X1: subst > term > term] :
                                                            ( ! [X2: subst,X3: term,X4: subst] :
                                                                ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                                = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                           => ! [X2: subst > term > term] :
                                                                ( ! [X3: subst,X4: term,X5: subst] :
                                                                    ( ( sub @ ( X2 @ X3 @ X4 ) @ X5 )
                                                                    = ( X2 @ ( comp @ X3 @ X5 ) @ ( sub @ X4 @ X5 ) ) )
                                                               => ( ( ( lam @ ( X1 @ sh @ one ) )
                                                                    = ( lam @ ( X2 @ sh @ one ) ) )
                                                                 => ! [X3: subst,X4: term] :
                                                                      ( ( X1 @ X3 @ X4 )
                                                                      = ( X2 @ X3 @ X4 ) ) ) ) )
                                                       => ( ! [X1: subst > term > term] :
                                                              ( ! [X2: subst,X3: term,X4: subst] :
                                                                  ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                                  = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                             => ! [X2: term,X3: term] :
                                                                  ( ( lam @ ( X1 @ sh @ one ) )
                                                                 != ( ap @ ( sub @ X2 @ id ) @ X3 ) ) )
                                                         => ( ! [X1: subst > term > term] :
                                                                ( ! [X2: subst,X3: term,X4: subst] :
                                                                    ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                                    = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                               => ~ ( var @ ( sub @ ( lam @ ( X1 @ sh @ one ) ) @ id ) ) )
                                                           => ! [X1: term,X2: term] :
                                                                ~ ( var @ ( sub @ ( ap @ ( sub @ X1 @ id ) @ X2 ) @ id ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ),
    introduced(assumption,[]) ).

thf(h11,assumption,
    ! [X1: subst] :
      ( ( comp @ id @ X1 )
      = X1 ),
    introduced(assumption,[]) ).

thf(h12,assumption,
    ~ ( ! [X1: term,X2: subst] :
          ( ( comp @ sh @ ( push @ X1 @ X2 ) )
          = X2 )
     => ( ! [X1: subst,X2: subst,X3: subst] :
            ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
            = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
       => ( ! [X1: term,X2: subst,X3: subst] :
              ( ( comp @ ( push @ X1 @ X2 ) @ X3 )
              = ( push @ ( sub @ X1 @ X3 ) @ ( comp @ X2 @ X3 ) ) )
         => ( ! [X1: subst] :
                ( ( comp @ X1 @ id )
                = X1 )
           => ( ( ( push @ one @ sh )
                = id )
             => ( ! [X1: subst] :
                    ( ( push @ ( sub @ one @ X1 ) @ ( comp @ sh @ X1 ) )
                    = X1 )
               => ( ( var @ one )
                 => ( ! [X1: term] :
                        ( ( var @ X1 )
                       => ( var @ ( sub @ X1 @ sh ) ) )
                   => ( ! [X1: term > $o] :
                          ( ( X1 @ one )
                         => ( ! [X2: term] :
                                ( ( var @ X2 )
                               => ( ( X1 @ X2 )
                                 => ( X1 @ ( sub @ X2 @ sh ) ) ) )
                           => ! [X2: term] :
                                ( ( var @ X2 )
                               => ( X1 @ X2 ) ) ) )
                     => ( ! [X1: term,X2: term,X3: term,X4: term] :
                            ( ( ( ap @ X1 @ X3 )
                              = ( ap @ X2 @ X4 ) )
                           => ( X1 = X2 ) )
                       => ( ! [X1: term,X2: term,X3: term,X4: term] :
                              ( ( ( ap @ X1 @ X3 )
                                = ( ap @ X2 @ X4 ) )
                             => ( X3 = X4 ) )
                         => ( ! [X1: term,X2: term] :
                                ( ( ( lam @ X1 )
                                  = ( lam @ X2 ) )
                               => ( X1 = X2 ) )
                           => ( ! [X1: term,X2: term] :
                                  ( ( ( sub @ X1 @ sh )
                                    = ( sub @ X2 @ sh ) )
                                 => ( X1 = X2 ) )
                             => ( ! [X1: term,X2: term,X3: term] :
                                    ( ( lam @ X1 )
                                   != ( ap @ X2 @ X3 ) )
                               => ( sP4
                                 => ( ! [X1: term] :
                                        ~ ( var @ ( lam @ X1 ) )
                                   => ( ! [X1: term > $o] :
                                          ( ! [X2: term] :
                                              ( ( var @ X2 )
                                             => ( X1 @ X2 ) )
                                         => ( ! [X2: term,X3: term] :
                                                ( ( X1 @ X2 )
                                               => ( ( X1 @ X3 )
                                                 => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                           => ( ! [X2: term] :
                                                  ( ( X1 @ X2 )
                                                 => ( X1 @ ( lam @ X2 ) ) )
                                             => ! [X2: term] : ( X1 @ X2 ) ) ) )
                                     => ( ! [X1: term > $o,X2: term,X3: subst] :
                                            ( ! [X4: term] :
                                                ( ( var @ X4 )
                                               => ( X1 @ ( sub @ X4 @ X3 ) ) )
                                           => ( ( X1 @ X2 )
                                             => ! [X4: term] :
                                                  ( ( var @ X4 )
                                                 => ( X1 @ ( sub @ X4 @ ( push @ X2 @ X3 ) ) ) ) ) )
                                       => ( ! [X1: term > $o] :
                                              ( ! [X2: term,X3: term] :
                                                  ( ( X1 @ X2 )
                                                 => ( ( X1 @ X3 )
                                                   => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                             => ( ! [X2: term] :
                                                    ( ! [X3: term] :
                                                        ( ( X1 @ X3 )
                                                       => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                                                   => ( X1 @ ( lam @ X2 ) ) )
                                               => ! [X2: term,X3: subst] :
                                                    ( ! [X4: term] :
                                                        ( ( var @ X4 )
                                                       => ( X1 @ ( sub @ X4 @ X3 ) ) )
                                                   => ( X1 @ ( sub @ X2 @ X3 ) ) ) ) )
                                         => ( ! [X1: term > $o] :
                                                ( ! [X2: term] :
                                                    ( ( var @ X2 )
                                                   => ( X1 @ X2 ) )
                                               => ( ! [X2: term,X3: term] :
                                                      ( ( X1 @ X2 )
                                                     => ( ( X1 @ X3 )
                                                       => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                                 => ( ! [X2: term] :
                                                        ( ! [X3: term] :
                                                            ( ( X1 @ X3 )
                                                           => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                                                       => ( X1 @ ( lam @ X2 ) ) )
                                                   => ! [X2: term] : ( X1 @ X2 ) ) ) )
                                           => ( ~ ( ~ ( ! [X1: subst,X2: subst,X3: subst] :
                                                          ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
                                                          = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
                                                     => ~ ! [X1: subst] :
                                                            ( ( comp @ id @ X1 )
                                                            = X1 ) )
                                                 => ~ ! [X1: subst] :
                                                        ( ( comp @ X1 @ id )
                                                        = X1 ) )
                                             => ( ~ ( ! [X1: term,X2: subst,X3: subst] :
                                                        ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
                                                        = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) )
                                                   => ~ sP1 )
                                               => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                                      ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                                        = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                                                     => ( X1 = X2 ) )
                                                 => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                                        ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                                          = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                                                       => ( X3 = X4 ) )
                                                   => ( ! [X1: subst > term > term] :
                                                          ( ! [X2: subst,X3: term,X4: subst] :
                                                              ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                              = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                         => ! [X2: subst > term > term] :
                                                              ( ! [X3: subst,X4: term,X5: subst] :
                                                                  ( ( sub @ ( X2 @ X3 @ X4 ) @ X5 )
                                                                  = ( X2 @ ( comp @ X3 @ X5 ) @ ( sub @ X4 @ X5 ) ) )
                                                             => ( ( ( lam @ ( X1 @ sh @ one ) )
                                                                  = ( lam @ ( X2 @ sh @ one ) ) )
                                                               => ! [X3: subst,X4: term] :
                                                                    ( ( X1 @ X3 @ X4 )
                                                                    = ( X2 @ X3 @ X4 ) ) ) ) )
                                                     => ( ! [X1: subst > term > term] :
                                                            ( ! [X2: subst,X3: term,X4: subst] :
                                                                ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                                = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                           => ! [X2: term,X3: term] :
                                                                ( ( lam @ ( X1 @ sh @ one ) )
                                                               != ( ap @ ( sub @ X2 @ id ) @ X3 ) ) )
                                                       => ( ! [X1: subst > term > term] :
                                                              ( ! [X2: subst,X3: term,X4: subst] :
                                                                  ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                                  = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                             => ~ ( var @ ( sub @ ( lam @ ( X1 @ sh @ one ) ) @ id ) ) )
                                                         => ! [X1: term,X2: term] :
                                                              ~ ( var @ ( sub @ ( ap @ ( sub @ X1 @ id ) @ X2 ) @ id ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ),
    introduced(assumption,[]) ).

thf(h13,assumption,
    ! [X1: term,X2: subst] :
      ( ( comp @ sh @ ( push @ X1 @ X2 ) )
      = X2 ),
    introduced(assumption,[]) ).

thf(h14,assumption,
    ~ ( ! [X1: subst,X2: subst,X3: subst] :
          ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
          = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
     => ( ! [X1: term,X2: subst,X3: subst] :
            ( ( comp @ ( push @ X1 @ X2 ) @ X3 )
            = ( push @ ( sub @ X1 @ X3 ) @ ( comp @ X2 @ X3 ) ) )
       => ( ! [X1: subst] :
              ( ( comp @ X1 @ id )
              = X1 )
         => ( ( ( push @ one @ sh )
              = id )
           => ( ! [X1: subst] :
                  ( ( push @ ( sub @ one @ X1 ) @ ( comp @ sh @ X1 ) )
                  = X1 )
             => ( ( var @ one )
               => ( ! [X1: term] :
                      ( ( var @ X1 )
                     => ( var @ ( sub @ X1 @ sh ) ) )
                 => ( ! [X1: term > $o] :
                        ( ( X1 @ one )
                       => ( ! [X2: term] :
                              ( ( var @ X2 )
                             => ( ( X1 @ X2 )
                               => ( X1 @ ( sub @ X2 @ sh ) ) ) )
                         => ! [X2: term] :
                              ( ( var @ X2 )
                             => ( X1 @ X2 ) ) ) )
                   => ( ! [X1: term,X2: term,X3: term,X4: term] :
                          ( ( ( ap @ X1 @ X3 )
                            = ( ap @ X2 @ X4 ) )
                         => ( X1 = X2 ) )
                     => ( ! [X1: term,X2: term,X3: term,X4: term] :
                            ( ( ( ap @ X1 @ X3 )
                              = ( ap @ X2 @ X4 ) )
                           => ( X3 = X4 ) )
                       => ( ! [X1: term,X2: term] :
                              ( ( ( lam @ X1 )
                                = ( lam @ X2 ) )
                             => ( X1 = X2 ) )
                         => ( ! [X1: term,X2: term] :
                                ( ( ( sub @ X1 @ sh )
                                  = ( sub @ X2 @ sh ) )
                               => ( X1 = X2 ) )
                           => ( ! [X1: term,X2: term,X3: term] :
                                  ( ( lam @ X1 )
                                 != ( ap @ X2 @ X3 ) )
                             => ( sP4
                               => ( ! [X1: term] :
                                      ~ ( var @ ( lam @ X1 ) )
                                 => ( ! [X1: term > $o] :
                                        ( ! [X2: term] :
                                            ( ( var @ X2 )
                                           => ( X1 @ X2 ) )
                                       => ( ! [X2: term,X3: term] :
                                              ( ( X1 @ X2 )
                                             => ( ( X1 @ X3 )
                                               => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                         => ( ! [X2: term] :
                                                ( ( X1 @ X2 )
                                               => ( X1 @ ( lam @ X2 ) ) )
                                           => ! [X2: term] : ( X1 @ X2 ) ) ) )
                                   => ( ! [X1: term > $o,X2: term,X3: subst] :
                                          ( ! [X4: term] :
                                              ( ( var @ X4 )
                                             => ( X1 @ ( sub @ X4 @ X3 ) ) )
                                         => ( ( X1 @ X2 )
                                           => ! [X4: term] :
                                                ( ( var @ X4 )
                                               => ( X1 @ ( sub @ X4 @ ( push @ X2 @ X3 ) ) ) ) ) )
                                     => ( ! [X1: term > $o] :
                                            ( ! [X2: term,X3: term] :
                                                ( ( X1 @ X2 )
                                               => ( ( X1 @ X3 )
                                                 => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                           => ( ! [X2: term] :
                                                  ( ! [X3: term] :
                                                      ( ( X1 @ X3 )
                                                     => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                                                 => ( X1 @ ( lam @ X2 ) ) )
                                             => ! [X2: term,X3: subst] :
                                                  ( ! [X4: term] :
                                                      ( ( var @ X4 )
                                                     => ( X1 @ ( sub @ X4 @ X3 ) ) )
                                                 => ( X1 @ ( sub @ X2 @ X3 ) ) ) ) )
                                       => ( ! [X1: term > $o] :
                                              ( ! [X2: term] :
                                                  ( ( var @ X2 )
                                                 => ( X1 @ X2 ) )
                                             => ( ! [X2: term,X3: term] :
                                                    ( ( X1 @ X2 )
                                                   => ( ( X1 @ X3 )
                                                     => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                               => ( ! [X2: term] :
                                                      ( ! [X3: term] :
                                                          ( ( X1 @ X3 )
                                                         => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                                                     => ( X1 @ ( lam @ X2 ) ) )
                                                 => ! [X2: term] : ( X1 @ X2 ) ) ) )
                                         => ( ~ ( ~ ( ! [X1: subst,X2: subst,X3: subst] :
                                                        ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
                                                        = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
                                                   => ~ ! [X1: subst] :
                                                          ( ( comp @ id @ X1 )
                                                          = X1 ) )
                                               => ~ ! [X1: subst] :
                                                      ( ( comp @ X1 @ id )
                                                      = X1 ) )
                                           => ( ~ ( ! [X1: term,X2: subst,X3: subst] :
                                                      ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
                                                      = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) )
                                                 => ~ sP1 )
                                             => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                                    ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                                      = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                                                   => ( X1 = X2 ) )
                                               => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                                      ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                                        = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                                                     => ( X3 = X4 ) )
                                                 => ( ! [X1: subst > term > term] :
                                                        ( ! [X2: subst,X3: term,X4: subst] :
                                                            ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                            = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                       => ! [X2: subst > term > term] :
                                                            ( ! [X3: subst,X4: term,X5: subst] :
                                                                ( ( sub @ ( X2 @ X3 @ X4 ) @ X5 )
                                                                = ( X2 @ ( comp @ X3 @ X5 ) @ ( sub @ X4 @ X5 ) ) )
                                                           => ( ( ( lam @ ( X1 @ sh @ one ) )
                                                                = ( lam @ ( X2 @ sh @ one ) ) )
                                                             => ! [X3: subst,X4: term] :
                                                                  ( ( X1 @ X3 @ X4 )
                                                                  = ( X2 @ X3 @ X4 ) ) ) ) )
                                                   => ( ! [X1: subst > term > term] :
                                                          ( ! [X2: subst,X3: term,X4: subst] :
                                                              ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                              = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                         => ! [X2: term,X3: term] :
                                                              ( ( lam @ ( X1 @ sh @ one ) )
                                                             != ( ap @ ( sub @ X2 @ id ) @ X3 ) ) )
                                                     => ( ! [X1: subst > term > term] :
                                                            ( ! [X2: subst,X3: term,X4: subst] :
                                                                ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                                = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                           => ~ ( var @ ( sub @ ( lam @ ( X1 @ sh @ one ) ) @ id ) ) )
                                                       => ! [X1: term,X2: term] :
                                                            ~ ( var @ ( sub @ ( ap @ ( sub @ X1 @ id ) @ X2 ) @ id ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ),
    introduced(assumption,[]) ).

thf(h15,assumption,
    ! [X1: subst,X2: subst,X3: subst] :
      ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
      = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) ),
    introduced(assumption,[]) ).

thf(h16,assumption,
    ~ ( ! [X1: term,X2: subst,X3: subst] :
          ( ( comp @ ( push @ X1 @ X2 ) @ X3 )
          = ( push @ ( sub @ X1 @ X3 ) @ ( comp @ X2 @ X3 ) ) )
     => ( ! [X1: subst] :
            ( ( comp @ X1 @ id )
            = X1 )
       => ( ( ( push @ one @ sh )
            = id )
         => ( ! [X1: subst] :
                ( ( push @ ( sub @ one @ X1 ) @ ( comp @ sh @ X1 ) )
                = X1 )
           => ( ( var @ one )
             => ( ! [X1: term] :
                    ( ( var @ X1 )
                   => ( var @ ( sub @ X1 @ sh ) ) )
               => ( ! [X1: term > $o] :
                      ( ( X1 @ one )
                     => ( ! [X2: term] :
                            ( ( var @ X2 )
                           => ( ( X1 @ X2 )
                             => ( X1 @ ( sub @ X2 @ sh ) ) ) )
                       => ! [X2: term] :
                            ( ( var @ X2 )
                           => ( X1 @ X2 ) ) ) )
                 => ( ! [X1: term,X2: term,X3: term,X4: term] :
                        ( ( ( ap @ X1 @ X3 )
                          = ( ap @ X2 @ X4 ) )
                       => ( X1 = X2 ) )
                   => ( ! [X1: term,X2: term,X3: term,X4: term] :
                          ( ( ( ap @ X1 @ X3 )
                            = ( ap @ X2 @ X4 ) )
                         => ( X3 = X4 ) )
                     => ( ! [X1: term,X2: term] :
                            ( ( ( lam @ X1 )
                              = ( lam @ X2 ) )
                           => ( X1 = X2 ) )
                       => ( ! [X1: term,X2: term] :
                              ( ( ( sub @ X1 @ sh )
                                = ( sub @ X2 @ sh ) )
                             => ( X1 = X2 ) )
                         => ( ! [X1: term,X2: term,X3: term] :
                                ( ( lam @ X1 )
                               != ( ap @ X2 @ X3 ) )
                           => ( sP4
                             => ( ! [X1: term] :
                                    ~ ( var @ ( lam @ X1 ) )
                               => ( ! [X1: term > $o] :
                                      ( ! [X2: term] :
                                          ( ( var @ X2 )
                                         => ( X1 @ X2 ) )
                                     => ( ! [X2: term,X3: term] :
                                            ( ( X1 @ X2 )
                                           => ( ( X1 @ X3 )
                                             => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                       => ( ! [X2: term] :
                                              ( ( X1 @ X2 )
                                             => ( X1 @ ( lam @ X2 ) ) )
                                         => ! [X2: term] : ( X1 @ X2 ) ) ) )
                                 => ( ! [X1: term > $o,X2: term,X3: subst] :
                                        ( ! [X4: term] :
                                            ( ( var @ X4 )
                                           => ( X1 @ ( sub @ X4 @ X3 ) ) )
                                       => ( ( X1 @ X2 )
                                         => ! [X4: term] :
                                              ( ( var @ X4 )
                                             => ( X1 @ ( sub @ X4 @ ( push @ X2 @ X3 ) ) ) ) ) )
                                   => ( ! [X1: term > $o] :
                                          ( ! [X2: term,X3: term] :
                                              ( ( X1 @ X2 )
                                             => ( ( X1 @ X3 )
                                               => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                         => ( ! [X2: term] :
                                                ( ! [X3: term] :
                                                    ( ( X1 @ X3 )
                                                   => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                                               => ( X1 @ ( lam @ X2 ) ) )
                                           => ! [X2: term,X3: subst] :
                                                ( ! [X4: term] :
                                                    ( ( var @ X4 )
                                                   => ( X1 @ ( sub @ X4 @ X3 ) ) )
                                               => ( X1 @ ( sub @ X2 @ X3 ) ) ) ) )
                                     => ( ! [X1: term > $o] :
                                            ( ! [X2: term] :
                                                ( ( var @ X2 )
                                               => ( X1 @ X2 ) )
                                           => ( ! [X2: term,X3: term] :
                                                  ( ( X1 @ X2 )
                                                 => ( ( X1 @ X3 )
                                                   => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                             => ( ! [X2: term] :
                                                    ( ! [X3: term] :
                                                        ( ( X1 @ X3 )
                                                       => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                                                   => ( X1 @ ( lam @ X2 ) ) )
                                               => ! [X2: term] : ( X1 @ X2 ) ) ) )
                                       => ( ~ ( ~ ( ! [X1: subst,X2: subst,X3: subst] :
                                                      ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
                                                      = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
                                                 => ~ ! [X1: subst] :
                                                        ( ( comp @ id @ X1 )
                                                        = X1 ) )
                                             => ~ ! [X1: subst] :
                                                    ( ( comp @ X1 @ id )
                                                    = X1 ) )
                                         => ( ~ ( ! [X1: term,X2: subst,X3: subst] :
                                                    ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
                                                    = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) )
                                               => ~ sP1 )
                                           => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                                  ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                                    = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                                                 => ( X1 = X2 ) )
                                             => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                                    ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                                      = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                                                   => ( X3 = X4 ) )
                                               => ( ! [X1: subst > term > term] :
                                                      ( ! [X2: subst,X3: term,X4: subst] :
                                                          ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                          = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                     => ! [X2: subst > term > term] :
                                                          ( ! [X3: subst,X4: term,X5: subst] :
                                                              ( ( sub @ ( X2 @ X3 @ X4 ) @ X5 )
                                                              = ( X2 @ ( comp @ X3 @ X5 ) @ ( sub @ X4 @ X5 ) ) )
                                                         => ( ( ( lam @ ( X1 @ sh @ one ) )
                                                              = ( lam @ ( X2 @ sh @ one ) ) )
                                                           => ! [X3: subst,X4: term] :
                                                                ( ( X1 @ X3 @ X4 )
                                                                = ( X2 @ X3 @ X4 ) ) ) ) )
                                                 => ( ! [X1: subst > term > term] :
                                                        ( ! [X2: subst,X3: term,X4: subst] :
                                                            ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                            = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                       => ! [X2: term,X3: term] :
                                                            ( ( lam @ ( X1 @ sh @ one ) )
                                                           != ( ap @ ( sub @ X2 @ id ) @ X3 ) ) )
                                                   => ( ! [X1: subst > term > term] :
                                                          ( ! [X2: subst,X3: term,X4: subst] :
                                                              ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                              = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                         => ~ ( var @ ( sub @ ( lam @ ( X1 @ sh @ one ) ) @ id ) ) )
                                                     => ! [X1: term,X2: term] :
                                                          ~ ( var @ ( sub @ ( ap @ ( sub @ X1 @ id ) @ X2 ) @ id ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ),
    introduced(assumption,[]) ).

thf(h17,assumption,
    ! [X1: term,X2: subst,X3: subst] :
      ( ( comp @ ( push @ X1 @ X2 ) @ X3 )
      = ( push @ ( sub @ X1 @ X3 ) @ ( comp @ X2 @ X3 ) ) ),
    introduced(assumption,[]) ).

thf(h18,assumption,
    ~ ( ! [X1: subst] :
          ( ( comp @ X1 @ id )
          = X1 )
     => ( ( ( push @ one @ sh )
          = id )
       => ( ! [X1: subst] :
              ( ( push @ ( sub @ one @ X1 ) @ ( comp @ sh @ X1 ) )
              = X1 )
         => ( ( var @ one )
           => ( ! [X1: term] :
                  ( ( var @ X1 )
                 => ( var @ ( sub @ X1 @ sh ) ) )
             => ( ! [X1: term > $o] :
                    ( ( X1 @ one )
                   => ( ! [X2: term] :
                          ( ( var @ X2 )
                         => ( ( X1 @ X2 )
                           => ( X1 @ ( sub @ X2 @ sh ) ) ) )
                     => ! [X2: term] :
                          ( ( var @ X2 )
                         => ( X1 @ X2 ) ) ) )
               => ( ! [X1: term,X2: term,X3: term,X4: term] :
                      ( ( ( ap @ X1 @ X3 )
                        = ( ap @ X2 @ X4 ) )
                     => ( X1 = X2 ) )
                 => ( ! [X1: term,X2: term,X3: term,X4: term] :
                        ( ( ( ap @ X1 @ X3 )
                          = ( ap @ X2 @ X4 ) )
                       => ( X3 = X4 ) )
                   => ( ! [X1: term,X2: term] :
                          ( ( ( lam @ X1 )
                            = ( lam @ X2 ) )
                         => ( X1 = X2 ) )
                     => ( ! [X1: term,X2: term] :
                            ( ( ( sub @ X1 @ sh )
                              = ( sub @ X2 @ sh ) )
                           => ( X1 = X2 ) )
                       => ( ! [X1: term,X2: term,X3: term] :
                              ( ( lam @ X1 )
                             != ( ap @ X2 @ X3 ) )
                         => ( sP4
                           => ( ! [X1: term] :
                                  ~ ( var @ ( lam @ X1 ) )
                             => ( ! [X1: term > $o] :
                                    ( ! [X2: term] :
                                        ( ( var @ X2 )
                                       => ( X1 @ X2 ) )
                                   => ( ! [X2: term,X3: term] :
                                          ( ( X1 @ X2 )
                                         => ( ( X1 @ X3 )
                                           => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                     => ( ! [X2: term] :
                                            ( ( X1 @ X2 )
                                           => ( X1 @ ( lam @ X2 ) ) )
                                       => ! [X2: term] : ( X1 @ X2 ) ) ) )
                               => ( ! [X1: term > $o,X2: term,X3: subst] :
                                      ( ! [X4: term] :
                                          ( ( var @ X4 )
                                         => ( X1 @ ( sub @ X4 @ X3 ) ) )
                                     => ( ( X1 @ X2 )
                                       => ! [X4: term] :
                                            ( ( var @ X4 )
                                           => ( X1 @ ( sub @ X4 @ ( push @ X2 @ X3 ) ) ) ) ) )
                                 => ( ! [X1: term > $o] :
                                        ( ! [X2: term,X3: term] :
                                            ( ( X1 @ X2 )
                                           => ( ( X1 @ X3 )
                                             => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                       => ( ! [X2: term] :
                                              ( ! [X3: term] :
                                                  ( ( X1 @ X3 )
                                                 => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                                             => ( X1 @ ( lam @ X2 ) ) )
                                         => ! [X2: term,X3: subst] :
                                              ( ! [X4: term] :
                                                  ( ( var @ X4 )
                                                 => ( X1 @ ( sub @ X4 @ X3 ) ) )
                                             => ( X1 @ ( sub @ X2 @ X3 ) ) ) ) )
                                   => ( ! [X1: term > $o] :
                                          ( ! [X2: term] :
                                              ( ( var @ X2 )
                                             => ( X1 @ X2 ) )
                                         => ( ! [X2: term,X3: term] :
                                                ( ( X1 @ X2 )
                                               => ( ( X1 @ X3 )
                                                 => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                           => ( ! [X2: term] :
                                                  ( ! [X3: term] :
                                                      ( ( X1 @ X3 )
                                                     => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                                                 => ( X1 @ ( lam @ X2 ) ) )
                                             => ! [X2: term] : ( X1 @ X2 ) ) ) )
                                     => ( ~ ( ~ ( ! [X1: subst,X2: subst,X3: subst] :
                                                    ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
                                                    = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
                                               => ~ ! [X1: subst] :
                                                      ( ( comp @ id @ X1 )
                                                      = X1 ) )
                                           => ~ ! [X1: subst] :
                                                  ( ( comp @ X1 @ id )
                                                  = X1 ) )
                                       => ( ~ ( ! [X1: term,X2: subst,X3: subst] :
                                                  ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
                                                  = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) )
                                             => ~ sP1 )
                                         => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                                ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                                  = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                                               => ( X1 = X2 ) )
                                           => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                                  ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                                    = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                                                 => ( X3 = X4 ) )
                                             => ( ! [X1: subst > term > term] :
                                                    ( ! [X2: subst,X3: term,X4: subst] :
                                                        ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                        = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                   => ! [X2: subst > term > term] :
                                                        ( ! [X3: subst,X4: term,X5: subst] :
                                                            ( ( sub @ ( X2 @ X3 @ X4 ) @ X5 )
                                                            = ( X2 @ ( comp @ X3 @ X5 ) @ ( sub @ X4 @ X5 ) ) )
                                                       => ( ( ( lam @ ( X1 @ sh @ one ) )
                                                            = ( lam @ ( X2 @ sh @ one ) ) )
                                                         => ! [X3: subst,X4: term] :
                                                              ( ( X1 @ X3 @ X4 )
                                                              = ( X2 @ X3 @ X4 ) ) ) ) )
                                               => ( ! [X1: subst > term > term] :
                                                      ( ! [X2: subst,X3: term,X4: subst] :
                                                          ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                          = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                     => ! [X2: term,X3: term] :
                                                          ( ( lam @ ( X1 @ sh @ one ) )
                                                         != ( ap @ ( sub @ X2 @ id ) @ X3 ) ) )
                                                 => ( ! [X1: subst > term > term] :
                                                        ( ! [X2: subst,X3: term,X4: subst] :
                                                            ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                            = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                       => ~ ( var @ ( sub @ ( lam @ ( X1 @ sh @ one ) ) @ id ) ) )
                                                   => ! [X1: term,X2: term] :
                                                        ~ ( var @ ( sub @ ( ap @ ( sub @ X1 @ id ) @ X2 ) @ id ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ),
    introduced(assumption,[]) ).

thf(h19,assumption,
    ! [X1: subst] :
      ( ( comp @ X1 @ id )
      = X1 ),
    introduced(assumption,[]) ).

thf(h20,assumption,
    ~ ( ( ( push @ one @ sh )
        = id )
     => ( ! [X1: subst] :
            ( ( push @ ( sub @ one @ X1 ) @ ( comp @ sh @ X1 ) )
            = X1 )
       => ( ( var @ one )
         => ( ! [X1: term] :
                ( ( var @ X1 )
               => ( var @ ( sub @ X1 @ sh ) ) )
           => ( ! [X1: term > $o] :
                  ( ( X1 @ one )
                 => ( ! [X2: term] :
                        ( ( var @ X2 )
                       => ( ( X1 @ X2 )
                         => ( X1 @ ( sub @ X2 @ sh ) ) ) )
                   => ! [X2: term] :
                        ( ( var @ X2 )
                       => ( X1 @ X2 ) ) ) )
             => ( ! [X1: term,X2: term,X3: term,X4: term] :
                    ( ( ( ap @ X1 @ X3 )
                      = ( ap @ X2 @ X4 ) )
                   => ( X1 = X2 ) )
               => ( ! [X1: term,X2: term,X3: term,X4: term] :
                      ( ( ( ap @ X1 @ X3 )
                        = ( ap @ X2 @ X4 ) )
                     => ( X3 = X4 ) )
                 => ( ! [X1: term,X2: term] :
                        ( ( ( lam @ X1 )
                          = ( lam @ X2 ) )
                       => ( X1 = X2 ) )
                   => ( ! [X1: term,X2: term] :
                          ( ( ( sub @ X1 @ sh )
                            = ( sub @ X2 @ sh ) )
                         => ( X1 = X2 ) )
                     => ( ! [X1: term,X2: term,X3: term] :
                            ( ( lam @ X1 )
                           != ( ap @ X2 @ X3 ) )
                       => ( sP4
                         => ( ! [X1: term] :
                                ~ ( var @ ( lam @ X1 ) )
                           => ( ! [X1: term > $o] :
                                  ( ! [X2: term] :
                                      ( ( var @ X2 )
                                     => ( X1 @ X2 ) )
                                 => ( ! [X2: term,X3: term] :
                                        ( ( X1 @ X2 )
                                       => ( ( X1 @ X3 )
                                         => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                   => ( ! [X2: term] :
                                          ( ( X1 @ X2 )
                                         => ( X1 @ ( lam @ X2 ) ) )
                                     => ! [X2: term] : ( X1 @ X2 ) ) ) )
                             => ( ! [X1: term > $o,X2: term,X3: subst] :
                                    ( ! [X4: term] :
                                        ( ( var @ X4 )
                                       => ( X1 @ ( sub @ X4 @ X3 ) ) )
                                   => ( ( X1 @ X2 )
                                     => ! [X4: term] :
                                          ( ( var @ X4 )
                                         => ( X1 @ ( sub @ X4 @ ( push @ X2 @ X3 ) ) ) ) ) )
                               => ( ! [X1: term > $o] :
                                      ( ! [X2: term,X3: term] :
                                          ( ( X1 @ X2 )
                                         => ( ( X1 @ X3 )
                                           => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                     => ( ! [X2: term] :
                                            ( ! [X3: term] :
                                                ( ( X1 @ X3 )
                                               => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                                           => ( X1 @ ( lam @ X2 ) ) )
                                       => ! [X2: term,X3: subst] :
                                            ( ! [X4: term] :
                                                ( ( var @ X4 )
                                               => ( X1 @ ( sub @ X4 @ X3 ) ) )
                                           => ( X1 @ ( sub @ X2 @ X3 ) ) ) ) )
                                 => ( ! [X1: term > $o] :
                                        ( ! [X2: term] :
                                            ( ( var @ X2 )
                                           => ( X1 @ X2 ) )
                                       => ( ! [X2: term,X3: term] :
                                              ( ( X1 @ X2 )
                                             => ( ( X1 @ X3 )
                                               => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                         => ( ! [X2: term] :
                                                ( ! [X3: term] :
                                                    ( ( X1 @ X3 )
                                                   => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                                               => ( X1 @ ( lam @ X2 ) ) )
                                           => ! [X2: term] : ( X1 @ X2 ) ) ) )
                                   => ( ~ ( ~ ( ! [X1: subst,X2: subst,X3: subst] :
                                                  ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
                                                  = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
                                             => ~ ! [X1: subst] :
                                                    ( ( comp @ id @ X1 )
                                                    = X1 ) )
                                         => ~ ! [X1: subst] :
                                                ( ( comp @ X1 @ id )
                                                = X1 ) )
                                     => ( ~ ( ! [X1: term,X2: subst,X3: subst] :
                                                ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
                                                = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) )
                                           => ~ sP1 )
                                       => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                              ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                                = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                                             => ( X1 = X2 ) )
                                         => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                                ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                                  = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                                               => ( X3 = X4 ) )
                                           => ( ! [X1: subst > term > term] :
                                                  ( ! [X2: subst,X3: term,X4: subst] :
                                                      ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                      = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                 => ! [X2: subst > term > term] :
                                                      ( ! [X3: subst,X4: term,X5: subst] :
                                                          ( ( sub @ ( X2 @ X3 @ X4 ) @ X5 )
                                                          = ( X2 @ ( comp @ X3 @ X5 ) @ ( sub @ X4 @ X5 ) ) )
                                                     => ( ( ( lam @ ( X1 @ sh @ one ) )
                                                          = ( lam @ ( X2 @ sh @ one ) ) )
                                                       => ! [X3: subst,X4: term] :
                                                            ( ( X1 @ X3 @ X4 )
                                                            = ( X2 @ X3 @ X4 ) ) ) ) )
                                             => ( ! [X1: subst > term > term] :
                                                    ( ! [X2: subst,X3: term,X4: subst] :
                                                        ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                        = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                   => ! [X2: term,X3: term] :
                                                        ( ( lam @ ( X1 @ sh @ one ) )
                                                       != ( ap @ ( sub @ X2 @ id ) @ X3 ) ) )
                                               => ( ! [X1: subst > term > term] :
                                                      ( ! [X2: subst,X3: term,X4: subst] :
                                                          ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                          = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                     => ~ ( var @ ( sub @ ( lam @ ( X1 @ sh @ one ) ) @ id ) ) )
                                                 => ! [X1: term,X2: term] :
                                                      ~ ( var @ ( sub @ ( ap @ ( sub @ X1 @ id ) @ X2 ) @ id ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ),
    introduced(assumption,[]) ).

thf(h21,assumption,
    ( ( push @ one @ sh )
    = id ),
    introduced(assumption,[]) ).

thf(h22,assumption,
    ~ ( ! [X1: subst] :
          ( ( push @ ( sub @ one @ X1 ) @ ( comp @ sh @ X1 ) )
          = X1 )
     => ( ( var @ one )
       => ( ! [X1: term] :
              ( ( var @ X1 )
             => ( var @ ( sub @ X1 @ sh ) ) )
         => ( ! [X1: term > $o] :
                ( ( X1 @ one )
               => ( ! [X2: term] :
                      ( ( var @ X2 )
                     => ( ( X1 @ X2 )
                       => ( X1 @ ( sub @ X2 @ sh ) ) ) )
                 => ! [X2: term] :
                      ( ( var @ X2 )
                     => ( X1 @ X2 ) ) ) )
           => ( ! [X1: term,X2: term,X3: term,X4: term] :
                  ( ( ( ap @ X1 @ X3 )
                    = ( ap @ X2 @ X4 ) )
                 => ( X1 = X2 ) )
             => ( ! [X1: term,X2: term,X3: term,X4: term] :
                    ( ( ( ap @ X1 @ X3 )
                      = ( ap @ X2 @ X4 ) )
                   => ( X3 = X4 ) )
               => ( ! [X1: term,X2: term] :
                      ( ( ( lam @ X1 )
                        = ( lam @ X2 ) )
                     => ( X1 = X2 ) )
                 => ( ! [X1: term,X2: term] :
                        ( ( ( sub @ X1 @ sh )
                          = ( sub @ X2 @ sh ) )
                       => ( X1 = X2 ) )
                   => ( ! [X1: term,X2: term,X3: term] :
                          ( ( lam @ X1 )
                         != ( ap @ X2 @ X3 ) )
                     => ( sP4
                       => ( ! [X1: term] :
                              ~ ( var @ ( lam @ X1 ) )
                         => ( ! [X1: term > $o] :
                                ( ! [X2: term] :
                                    ( ( var @ X2 )
                                   => ( X1 @ X2 ) )
                               => ( ! [X2: term,X3: term] :
                                      ( ( X1 @ X2 )
                                     => ( ( X1 @ X3 )
                                       => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                 => ( ! [X2: term] :
                                        ( ( X1 @ X2 )
                                       => ( X1 @ ( lam @ X2 ) ) )
                                   => ! [X2: term] : ( X1 @ X2 ) ) ) )
                           => ( ! [X1: term > $o,X2: term,X3: subst] :
                                  ( ! [X4: term] :
                                      ( ( var @ X4 )
                                     => ( X1 @ ( sub @ X4 @ X3 ) ) )
                                 => ( ( X1 @ X2 )
                                   => ! [X4: term] :
                                        ( ( var @ X4 )
                                       => ( X1 @ ( sub @ X4 @ ( push @ X2 @ X3 ) ) ) ) ) )
                             => ( ! [X1: term > $o] :
                                    ( ! [X2: term,X3: term] :
                                        ( ( X1 @ X2 )
                                       => ( ( X1 @ X3 )
                                         => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                   => ( ! [X2: term] :
                                          ( ! [X3: term] :
                                              ( ( X1 @ X3 )
                                             => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                                         => ( X1 @ ( lam @ X2 ) ) )
                                     => ! [X2: term,X3: subst] :
                                          ( ! [X4: term] :
                                              ( ( var @ X4 )
                                             => ( X1 @ ( sub @ X4 @ X3 ) ) )
                                         => ( X1 @ ( sub @ X2 @ X3 ) ) ) ) )
                               => ( ! [X1: term > $o] :
                                      ( ! [X2: term] :
                                          ( ( var @ X2 )
                                         => ( X1 @ X2 ) )
                                     => ( ! [X2: term,X3: term] :
                                            ( ( X1 @ X2 )
                                           => ( ( X1 @ X3 )
                                             => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                       => ( ! [X2: term] :
                                              ( ! [X3: term] :
                                                  ( ( X1 @ X3 )
                                                 => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                                             => ( X1 @ ( lam @ X2 ) ) )
                                         => ! [X2: term] : ( X1 @ X2 ) ) ) )
                                 => ( ~ ( ~ ( ! [X1: subst,X2: subst,X3: subst] :
                                                ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
                                                = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
                                           => ~ ! [X1: subst] :
                                                  ( ( comp @ id @ X1 )
                                                  = X1 ) )
                                       => ~ ! [X1: subst] :
                                              ( ( comp @ X1 @ id )
                                              = X1 ) )
                                   => ( ~ ( ! [X1: term,X2: subst,X3: subst] :
                                              ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
                                              = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) )
                                         => ~ sP1 )
                                     => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                            ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                              = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                                           => ( X1 = X2 ) )
                                       => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                              ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                                = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                                             => ( X3 = X4 ) )
                                         => ( ! [X1: subst > term > term] :
                                                ( ! [X2: subst,X3: term,X4: subst] :
                                                    ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                    = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                               => ! [X2: subst > term > term] :
                                                    ( ! [X3: subst,X4: term,X5: subst] :
                                                        ( ( sub @ ( X2 @ X3 @ X4 ) @ X5 )
                                                        = ( X2 @ ( comp @ X3 @ X5 ) @ ( sub @ X4 @ X5 ) ) )
                                                   => ( ( ( lam @ ( X1 @ sh @ one ) )
                                                        = ( lam @ ( X2 @ sh @ one ) ) )
                                                     => ! [X3: subst,X4: term] :
                                                          ( ( X1 @ X3 @ X4 )
                                                          = ( X2 @ X3 @ X4 ) ) ) ) )
                                           => ( ! [X1: subst > term > term] :
                                                  ( ! [X2: subst,X3: term,X4: subst] :
                                                      ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                      = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                 => ! [X2: term,X3: term] :
                                                      ( ( lam @ ( X1 @ sh @ one ) )
                                                     != ( ap @ ( sub @ X2 @ id ) @ X3 ) ) )
                                             => ( ! [X1: subst > term > term] :
                                                    ( ! [X2: subst,X3: term,X4: subst] :
                                                        ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                        = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                   => ~ ( var @ ( sub @ ( lam @ ( X1 @ sh @ one ) ) @ id ) ) )
                                               => ! [X1: term,X2: term] :
                                                    ~ ( var @ ( sub @ ( ap @ ( sub @ X1 @ id ) @ X2 ) @ id ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ),
    introduced(assumption,[]) ).

thf(h23,assumption,
    ! [X1: subst] :
      ( ( push @ ( sub @ one @ X1 ) @ ( comp @ sh @ X1 ) )
      = X1 ),
    introduced(assumption,[]) ).

thf(h24,assumption,
    ~ ( ( var @ one )
     => ( ! [X1: term] :
            ( ( var @ X1 )
           => ( var @ ( sub @ X1 @ sh ) ) )
       => ( ! [X1: term > $o] :
              ( ( X1 @ one )
             => ( ! [X2: term] :
                    ( ( var @ X2 )
                   => ( ( X1 @ X2 )
                     => ( X1 @ ( sub @ X2 @ sh ) ) ) )
               => ! [X2: term] :
                    ( ( var @ X2 )
                   => ( X1 @ X2 ) ) ) )
         => ( ! [X1: term,X2: term,X3: term,X4: term] :
                ( ( ( ap @ X1 @ X3 )
                  = ( ap @ X2 @ X4 ) )
               => ( X1 = X2 ) )
           => ( ! [X1: term,X2: term,X3: term,X4: term] :
                  ( ( ( ap @ X1 @ X3 )
                    = ( ap @ X2 @ X4 ) )
                 => ( X3 = X4 ) )
             => ( ! [X1: term,X2: term] :
                    ( ( ( lam @ X1 )
                      = ( lam @ X2 ) )
                   => ( X1 = X2 ) )
               => ( ! [X1: term,X2: term] :
                      ( ( ( sub @ X1 @ sh )
                        = ( sub @ X2 @ sh ) )
                     => ( X1 = X2 ) )
                 => ( ! [X1: term,X2: term,X3: term] :
                        ( ( lam @ X1 )
                       != ( ap @ X2 @ X3 ) )
                   => ( sP4
                     => ( ! [X1: term] :
                            ~ ( var @ ( lam @ X1 ) )
                       => ( ! [X1: term > $o] :
                              ( ! [X2: term] :
                                  ( ( var @ X2 )
                                 => ( X1 @ X2 ) )
                             => ( ! [X2: term,X3: term] :
                                    ( ( X1 @ X2 )
                                   => ( ( X1 @ X3 )
                                     => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                               => ( ! [X2: term] :
                                      ( ( X1 @ X2 )
                                     => ( X1 @ ( lam @ X2 ) ) )
                                 => ! [X2: term] : ( X1 @ X2 ) ) ) )
                         => ( ! [X1: term > $o,X2: term,X3: subst] :
                                ( ! [X4: term] :
                                    ( ( var @ X4 )
                                   => ( X1 @ ( sub @ X4 @ X3 ) ) )
                               => ( ( X1 @ X2 )
                                 => ! [X4: term] :
                                      ( ( var @ X4 )
                                     => ( X1 @ ( sub @ X4 @ ( push @ X2 @ X3 ) ) ) ) ) )
                           => ( ! [X1: term > $o] :
                                  ( ! [X2: term,X3: term] :
                                      ( ( X1 @ X2 )
                                     => ( ( X1 @ X3 )
                                       => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                 => ( ! [X2: term] :
                                        ( ! [X3: term] :
                                            ( ( X1 @ X3 )
                                           => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                                       => ( X1 @ ( lam @ X2 ) ) )
                                   => ! [X2: term,X3: subst] :
                                        ( ! [X4: term] :
                                            ( ( var @ X4 )
                                           => ( X1 @ ( sub @ X4 @ X3 ) ) )
                                       => ( X1 @ ( sub @ X2 @ X3 ) ) ) ) )
                             => ( ! [X1: term > $o] :
                                    ( ! [X2: term] :
                                        ( ( var @ X2 )
                                       => ( X1 @ X2 ) )
                                   => ( ! [X2: term,X3: term] :
                                          ( ( X1 @ X2 )
                                         => ( ( X1 @ X3 )
                                           => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                     => ( ! [X2: term] :
                                            ( ! [X3: term] :
                                                ( ( X1 @ X3 )
                                               => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                                           => ( X1 @ ( lam @ X2 ) ) )
                                       => ! [X2: term] : ( X1 @ X2 ) ) ) )
                               => ( ~ ( ~ ( ! [X1: subst,X2: subst,X3: subst] :
                                              ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
                                              = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
                                         => ~ ! [X1: subst] :
                                                ( ( comp @ id @ X1 )
                                                = X1 ) )
                                     => ~ ! [X1: subst] :
                                            ( ( comp @ X1 @ id )
                                            = X1 ) )
                                 => ( ~ ( ! [X1: term,X2: subst,X3: subst] :
                                            ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
                                            = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) )
                                       => ~ sP1 )
                                   => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                          ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                            = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                                         => ( X1 = X2 ) )
                                     => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                            ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                              = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                                           => ( X3 = X4 ) )
                                       => ( ! [X1: subst > term > term] :
                                              ( ! [X2: subst,X3: term,X4: subst] :
                                                  ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                  = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                             => ! [X2: subst > term > term] :
                                                  ( ! [X3: subst,X4: term,X5: subst] :
                                                      ( ( sub @ ( X2 @ X3 @ X4 ) @ X5 )
                                                      = ( X2 @ ( comp @ X3 @ X5 ) @ ( sub @ X4 @ X5 ) ) )
                                                 => ( ( ( lam @ ( X1 @ sh @ one ) )
                                                      = ( lam @ ( X2 @ sh @ one ) ) )
                                                   => ! [X3: subst,X4: term] :
                                                        ( ( X1 @ X3 @ X4 )
                                                        = ( X2 @ X3 @ X4 ) ) ) ) )
                                         => ( ! [X1: subst > term > term] :
                                                ( ! [X2: subst,X3: term,X4: subst] :
                                                    ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                    = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                               => ! [X2: term,X3: term] :
                                                    ( ( lam @ ( X1 @ sh @ one ) )
                                                   != ( ap @ ( sub @ X2 @ id ) @ X3 ) ) )
                                           => ( ! [X1: subst > term > term] :
                                                  ( ! [X2: subst,X3: term,X4: subst] :
                                                      ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                      = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                 => ~ ( var @ ( sub @ ( lam @ ( X1 @ sh @ one ) ) @ id ) ) )
                                             => ! [X1: term,X2: term] :
                                                  ~ ( var @ ( sub @ ( ap @ ( sub @ X1 @ id ) @ X2 ) @ id ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ),
    introduced(assumption,[]) ).

thf(h25,assumption,
    var @ one,
    introduced(assumption,[]) ).

thf(h26,assumption,
    ~ ( ! [X1: term] :
          ( ( var @ X1 )
         => ( var @ ( sub @ X1 @ sh ) ) )
     => ( ! [X1: term > $o] :
            ( ( X1 @ one )
           => ( ! [X2: term] :
                  ( ( var @ X2 )
                 => ( ( X1 @ X2 )
                   => ( X1 @ ( sub @ X2 @ sh ) ) ) )
             => ! [X2: term] :
                  ( ( var @ X2 )
                 => ( X1 @ X2 ) ) ) )
       => ( ! [X1: term,X2: term,X3: term,X4: term] :
              ( ( ( ap @ X1 @ X3 )
                = ( ap @ X2 @ X4 ) )
             => ( X1 = X2 ) )
         => ( ! [X1: term,X2: term,X3: term,X4: term] :
                ( ( ( ap @ X1 @ X3 )
                  = ( ap @ X2 @ X4 ) )
               => ( X3 = X4 ) )
           => ( ! [X1: term,X2: term] :
                  ( ( ( lam @ X1 )
                    = ( lam @ X2 ) )
                 => ( X1 = X2 ) )
             => ( ! [X1: term,X2: term] :
                    ( ( ( sub @ X1 @ sh )
                      = ( sub @ X2 @ sh ) )
                   => ( X1 = X2 ) )
               => ( ! [X1: term,X2: term,X3: term] :
                      ( ( lam @ X1 )
                     != ( ap @ X2 @ X3 ) )
                 => ( sP4
                   => ( ! [X1: term] :
                          ~ ( var @ ( lam @ X1 ) )
                     => ( ! [X1: term > $o] :
                            ( ! [X2: term] :
                                ( ( var @ X2 )
                               => ( X1 @ X2 ) )
                           => ( ! [X2: term,X3: term] :
                                  ( ( X1 @ X2 )
                                 => ( ( X1 @ X3 )
                                   => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                             => ( ! [X2: term] :
                                    ( ( X1 @ X2 )
                                   => ( X1 @ ( lam @ X2 ) ) )
                               => ! [X2: term] : ( X1 @ X2 ) ) ) )
                       => ( ! [X1: term > $o,X2: term,X3: subst] :
                              ( ! [X4: term] :
                                  ( ( var @ X4 )
                                 => ( X1 @ ( sub @ X4 @ X3 ) ) )
                             => ( ( X1 @ X2 )
                               => ! [X4: term] :
                                    ( ( var @ X4 )
                                   => ( X1 @ ( sub @ X4 @ ( push @ X2 @ X3 ) ) ) ) ) )
                         => ( ! [X1: term > $o] :
                                ( ! [X2: term,X3: term] :
                                    ( ( X1 @ X2 )
                                   => ( ( X1 @ X3 )
                                     => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                               => ( ! [X2: term] :
                                      ( ! [X3: term] :
                                          ( ( X1 @ X3 )
                                         => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                                     => ( X1 @ ( lam @ X2 ) ) )
                                 => ! [X2: term,X3: subst] :
                                      ( ! [X4: term] :
                                          ( ( var @ X4 )
                                         => ( X1 @ ( sub @ X4 @ X3 ) ) )
                                     => ( X1 @ ( sub @ X2 @ X3 ) ) ) ) )
                           => ( ! [X1: term > $o] :
                                  ( ! [X2: term] :
                                      ( ( var @ X2 )
                                     => ( X1 @ X2 ) )
                                 => ( ! [X2: term,X3: term] :
                                        ( ( X1 @ X2 )
                                       => ( ( X1 @ X3 )
                                         => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                   => ( ! [X2: term] :
                                          ( ! [X3: term] :
                                              ( ( X1 @ X3 )
                                             => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                                         => ( X1 @ ( lam @ X2 ) ) )
                                     => ! [X2: term] : ( X1 @ X2 ) ) ) )
                             => ( ~ ( ~ ( ! [X1: subst,X2: subst,X3: subst] :
                                            ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
                                            = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
                                       => ~ ! [X1: subst] :
                                              ( ( comp @ id @ X1 )
                                              = X1 ) )
                                   => ~ ! [X1: subst] :
                                          ( ( comp @ X1 @ id )
                                          = X1 ) )
                               => ( ~ ( ! [X1: term,X2: subst,X3: subst] :
                                          ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
                                          = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) )
                                     => ~ sP1 )
                                 => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                        ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                          = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                                       => ( X1 = X2 ) )
                                   => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                          ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                            = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                                         => ( X3 = X4 ) )
                                     => ( ! [X1: subst > term > term] :
                                            ( ! [X2: subst,X3: term,X4: subst] :
                                                ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                           => ! [X2: subst > term > term] :
                                                ( ! [X3: subst,X4: term,X5: subst] :
                                                    ( ( sub @ ( X2 @ X3 @ X4 ) @ X5 )
                                                    = ( X2 @ ( comp @ X3 @ X5 ) @ ( sub @ X4 @ X5 ) ) )
                                               => ( ( ( lam @ ( X1 @ sh @ one ) )
                                                    = ( lam @ ( X2 @ sh @ one ) ) )
                                                 => ! [X3: subst,X4: term] :
                                                      ( ( X1 @ X3 @ X4 )
                                                      = ( X2 @ X3 @ X4 ) ) ) ) )
                                       => ( ! [X1: subst > term > term] :
                                              ( ! [X2: subst,X3: term,X4: subst] :
                                                  ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                  = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                             => ! [X2: term,X3: term] :
                                                  ( ( lam @ ( X1 @ sh @ one ) )
                                                 != ( ap @ ( sub @ X2 @ id ) @ X3 ) ) )
                                         => ( ! [X1: subst > term > term] :
                                                ( ! [X2: subst,X3: term,X4: subst] :
                                                    ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                    = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                               => ~ ( var @ ( sub @ ( lam @ ( X1 @ sh @ one ) ) @ id ) ) )
                                           => ! [X1: term,X2: term] :
                                                ~ ( var @ ( sub @ ( ap @ ( sub @ X1 @ id ) @ X2 ) @ id ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ),
    introduced(assumption,[]) ).

thf(h27,assumption,
    ! [X1: term] :
      ( ( var @ X1 )
     => ( var @ ( sub @ X1 @ sh ) ) ),
    introduced(assumption,[]) ).

thf(h28,assumption,
    ~ ( ! [X1: term > $o] :
          ( ( X1 @ one )
         => ( ! [X2: term] :
                ( ( var @ X2 )
               => ( ( X1 @ X2 )
                 => ( X1 @ ( sub @ X2 @ sh ) ) ) )
           => ! [X2: term] :
                ( ( var @ X2 )
               => ( X1 @ X2 ) ) ) )
     => ( ! [X1: term,X2: term,X3: term,X4: term] :
            ( ( ( ap @ X1 @ X3 )
              = ( ap @ X2 @ X4 ) )
           => ( X1 = X2 ) )
       => ( ! [X1: term,X2: term,X3: term,X4: term] :
              ( ( ( ap @ X1 @ X3 )
                = ( ap @ X2 @ X4 ) )
             => ( X3 = X4 ) )
         => ( ! [X1: term,X2: term] :
                ( ( ( lam @ X1 )
                  = ( lam @ X2 ) )
               => ( X1 = X2 ) )
           => ( ! [X1: term,X2: term] :
                  ( ( ( sub @ X1 @ sh )
                    = ( sub @ X2 @ sh ) )
                 => ( X1 = X2 ) )
             => ( ! [X1: term,X2: term,X3: term] :
                    ( ( lam @ X1 )
                   != ( ap @ X2 @ X3 ) )
               => ( sP4
                 => ( ! [X1: term] :
                        ~ ( var @ ( lam @ X1 ) )
                   => ( ! [X1: term > $o] :
                          ( ! [X2: term] :
                              ( ( var @ X2 )
                             => ( X1 @ X2 ) )
                         => ( ! [X2: term,X3: term] :
                                ( ( X1 @ X2 )
                               => ( ( X1 @ X3 )
                                 => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                           => ( ! [X2: term] :
                                  ( ( X1 @ X2 )
                                 => ( X1 @ ( lam @ X2 ) ) )
                             => ! [X2: term] : ( X1 @ X2 ) ) ) )
                     => ( ! [X1: term > $o,X2: term,X3: subst] :
                            ( ! [X4: term] :
                                ( ( var @ X4 )
                               => ( X1 @ ( sub @ X4 @ X3 ) ) )
                           => ( ( X1 @ X2 )
                             => ! [X4: term] :
                                  ( ( var @ X4 )
                                 => ( X1 @ ( sub @ X4 @ ( push @ X2 @ X3 ) ) ) ) ) )
                       => ( ! [X1: term > $o] :
                              ( ! [X2: term,X3: term] :
                                  ( ( X1 @ X2 )
                                 => ( ( X1 @ X3 )
                                   => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                             => ( ! [X2: term] :
                                    ( ! [X3: term] :
                                        ( ( X1 @ X3 )
                                       => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                                   => ( X1 @ ( lam @ X2 ) ) )
                               => ! [X2: term,X3: subst] :
                                    ( ! [X4: term] :
                                        ( ( var @ X4 )
                                       => ( X1 @ ( sub @ X4 @ X3 ) ) )
                                   => ( X1 @ ( sub @ X2 @ X3 ) ) ) ) )
                         => ( ! [X1: term > $o] :
                                ( ! [X2: term] :
                                    ( ( var @ X2 )
                                   => ( X1 @ X2 ) )
                               => ( ! [X2: term,X3: term] :
                                      ( ( X1 @ X2 )
                                     => ( ( X1 @ X3 )
                                       => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                 => ( ! [X2: term] :
                                        ( ! [X3: term] :
                                            ( ( X1 @ X3 )
                                           => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                                       => ( X1 @ ( lam @ X2 ) ) )
                                   => ! [X2: term] : ( X1 @ X2 ) ) ) )
                           => ( ~ ( ~ ( ! [X1: subst,X2: subst,X3: subst] :
                                          ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
                                          = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
                                     => ~ ! [X1: subst] :
                                            ( ( comp @ id @ X1 )
                                            = X1 ) )
                                 => ~ ! [X1: subst] :
                                        ( ( comp @ X1 @ id )
                                        = X1 ) )
                             => ( ~ ( ! [X1: term,X2: subst,X3: subst] :
                                        ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
                                        = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) )
                                   => ~ sP1 )
                               => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                      ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                        = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                                     => ( X1 = X2 ) )
                                 => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                        ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                          = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                                       => ( X3 = X4 ) )
                                   => ( ! [X1: subst > term > term] :
                                          ( ! [X2: subst,X3: term,X4: subst] :
                                              ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                              = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                         => ! [X2: subst > term > term] :
                                              ( ! [X3: subst,X4: term,X5: subst] :
                                                  ( ( sub @ ( X2 @ X3 @ X4 ) @ X5 )
                                                  = ( X2 @ ( comp @ X3 @ X5 ) @ ( sub @ X4 @ X5 ) ) )
                                             => ( ( ( lam @ ( X1 @ sh @ one ) )
                                                  = ( lam @ ( X2 @ sh @ one ) ) )
                                               => ! [X3: subst,X4: term] :
                                                    ( ( X1 @ X3 @ X4 )
                                                    = ( X2 @ X3 @ X4 ) ) ) ) )
                                     => ( ! [X1: subst > term > term] :
                                            ( ! [X2: subst,X3: term,X4: subst] :
                                                ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                           => ! [X2: term,X3: term] :
                                                ( ( lam @ ( X1 @ sh @ one ) )
                                               != ( ap @ ( sub @ X2 @ id ) @ X3 ) ) )
                                       => ( ! [X1: subst > term > term] :
                                              ( ! [X2: subst,X3: term,X4: subst] :
                                                  ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                  = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                             => ~ ( var @ ( sub @ ( lam @ ( X1 @ sh @ one ) ) @ id ) ) )
                                         => ! [X1: term,X2: term] :
                                              ~ ( var @ ( sub @ ( ap @ ( sub @ X1 @ id ) @ X2 ) @ id ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ),
    introduced(assumption,[]) ).

thf(h29,assumption,
    ! [X1: term > $o] :
      ( ( X1 @ one )
     => ( ! [X2: term] :
            ( ( var @ X2 )
           => ( ( X1 @ X2 )
             => ( X1 @ ( sub @ X2 @ sh ) ) ) )
       => ! [X2: term] :
            ( ( var @ X2 )
           => ( X1 @ X2 ) ) ) ),
    introduced(assumption,[]) ).

thf(h30,assumption,
    ~ ( ! [X1: term,X2: term,X3: term,X4: term] :
          ( ( ( ap @ X1 @ X3 )
            = ( ap @ X2 @ X4 ) )
         => ( X1 = X2 ) )
     => ( ! [X1: term,X2: term,X3: term,X4: term] :
            ( ( ( ap @ X1 @ X3 )
              = ( ap @ X2 @ X4 ) )
           => ( X3 = X4 ) )
       => ( ! [X1: term,X2: term] :
              ( ( ( lam @ X1 )
                = ( lam @ X2 ) )
             => ( X1 = X2 ) )
         => ( ! [X1: term,X2: term] :
                ( ( ( sub @ X1 @ sh )
                  = ( sub @ X2 @ sh ) )
               => ( X1 = X2 ) )
           => ( ! [X1: term,X2: term,X3: term] :
                  ( ( lam @ X1 )
                 != ( ap @ X2 @ X3 ) )
             => ( sP4
               => ( ! [X1: term] :
                      ~ ( var @ ( lam @ X1 ) )
                 => ( ! [X1: term > $o] :
                        ( ! [X2: term] :
                            ( ( var @ X2 )
                           => ( X1 @ X2 ) )
                       => ( ! [X2: term,X3: term] :
                              ( ( X1 @ X2 )
                             => ( ( X1 @ X3 )
                               => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                         => ( ! [X2: term] :
                                ( ( X1 @ X2 )
                               => ( X1 @ ( lam @ X2 ) ) )
                           => ! [X2: term] : ( X1 @ X2 ) ) ) )
                   => ( ! [X1: term > $o,X2: term,X3: subst] :
                          ( ! [X4: term] :
                              ( ( var @ X4 )
                             => ( X1 @ ( sub @ X4 @ X3 ) ) )
                         => ( ( X1 @ X2 )
                           => ! [X4: term] :
                                ( ( var @ X4 )
                               => ( X1 @ ( sub @ X4 @ ( push @ X2 @ X3 ) ) ) ) ) )
                     => ( ! [X1: term > $o] :
                            ( ! [X2: term,X3: term] :
                                ( ( X1 @ X2 )
                               => ( ( X1 @ X3 )
                                 => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                           => ( ! [X2: term] :
                                  ( ! [X3: term] :
                                      ( ( X1 @ X3 )
                                     => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                                 => ( X1 @ ( lam @ X2 ) ) )
                             => ! [X2: term,X3: subst] :
                                  ( ! [X4: term] :
                                      ( ( var @ X4 )
                                     => ( X1 @ ( sub @ X4 @ X3 ) ) )
                                 => ( X1 @ ( sub @ X2 @ X3 ) ) ) ) )
                       => ( ! [X1: term > $o] :
                              ( ! [X2: term] :
                                  ( ( var @ X2 )
                                 => ( X1 @ X2 ) )
                             => ( ! [X2: term,X3: term] :
                                    ( ( X1 @ X2 )
                                   => ( ( X1 @ X3 )
                                     => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                               => ( ! [X2: term] :
                                      ( ! [X3: term] :
                                          ( ( X1 @ X3 )
                                         => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                                     => ( X1 @ ( lam @ X2 ) ) )
                                 => ! [X2: term] : ( X1 @ X2 ) ) ) )
                         => ( ~ ( ~ ( ! [X1: subst,X2: subst,X3: subst] :
                                        ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
                                        = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
                                   => ~ ! [X1: subst] :
                                          ( ( comp @ id @ X1 )
                                          = X1 ) )
                               => ~ ! [X1: subst] :
                                      ( ( comp @ X1 @ id )
                                      = X1 ) )
                           => ( ~ ( ! [X1: term,X2: subst,X3: subst] :
                                      ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
                                      = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) )
                                 => ~ sP1 )
                             => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                    ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                      = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                                   => ( X1 = X2 ) )
                               => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                      ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                        = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                                     => ( X3 = X4 ) )
                                 => ( ! [X1: subst > term > term] :
                                        ( ! [X2: subst,X3: term,X4: subst] :
                                            ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                            = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                       => ! [X2: subst > term > term] :
                                            ( ! [X3: subst,X4: term,X5: subst] :
                                                ( ( sub @ ( X2 @ X3 @ X4 ) @ X5 )
                                                = ( X2 @ ( comp @ X3 @ X5 ) @ ( sub @ X4 @ X5 ) ) )
                                           => ( ( ( lam @ ( X1 @ sh @ one ) )
                                                = ( lam @ ( X2 @ sh @ one ) ) )
                                             => ! [X3: subst,X4: term] :
                                                  ( ( X1 @ X3 @ X4 )
                                                  = ( X2 @ X3 @ X4 ) ) ) ) )
                                   => ( ! [X1: subst > term > term] :
                                          ( ! [X2: subst,X3: term,X4: subst] :
                                              ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                              = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                         => ! [X2: term,X3: term] :
                                              ( ( lam @ ( X1 @ sh @ one ) )
                                             != ( ap @ ( sub @ X2 @ id ) @ X3 ) ) )
                                     => ( ! [X1: subst > term > term] :
                                            ( ! [X2: subst,X3: term,X4: subst] :
                                                ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                           => ~ ( var @ ( sub @ ( lam @ ( X1 @ sh @ one ) ) @ id ) ) )
                                       => ! [X1: term,X2: term] :
                                            ~ ( var @ ( sub @ ( ap @ ( sub @ X1 @ id ) @ X2 ) @ id ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ),
    introduced(assumption,[]) ).

thf(h31,assumption,
    ! [X1: term,X2: term,X3: term,X4: term] :
      ( ( ( ap @ X1 @ X3 )
        = ( ap @ X2 @ X4 ) )
     => ( X1 = X2 ) ),
    introduced(assumption,[]) ).

thf(h32,assumption,
    ~ ( ! [X1: term,X2: term,X3: term,X4: term] :
          ( ( ( ap @ X1 @ X3 )
            = ( ap @ X2 @ X4 ) )
         => ( X3 = X4 ) )
     => ( ! [X1: term,X2: term] :
            ( ( ( lam @ X1 )
              = ( lam @ X2 ) )
           => ( X1 = X2 ) )
       => ( ! [X1: term,X2: term] :
              ( ( ( sub @ X1 @ sh )
                = ( sub @ X2 @ sh ) )
             => ( X1 = X2 ) )
         => ( ! [X1: term,X2: term,X3: term] :
                ( ( lam @ X1 )
               != ( ap @ X2 @ X3 ) )
           => ( sP4
             => ( ! [X1: term] :
                    ~ ( var @ ( lam @ X1 ) )
               => ( ! [X1: term > $o] :
                      ( ! [X2: term] :
                          ( ( var @ X2 )
                         => ( X1 @ X2 ) )
                     => ( ! [X2: term,X3: term] :
                            ( ( X1 @ X2 )
                           => ( ( X1 @ X3 )
                             => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                       => ( ! [X2: term] :
                              ( ( X1 @ X2 )
                             => ( X1 @ ( lam @ X2 ) ) )
                         => ! [X2: term] : ( X1 @ X2 ) ) ) )
                 => ( ! [X1: term > $o,X2: term,X3: subst] :
                        ( ! [X4: term] :
                            ( ( var @ X4 )
                           => ( X1 @ ( sub @ X4 @ X3 ) ) )
                       => ( ( X1 @ X2 )
                         => ! [X4: term] :
                              ( ( var @ X4 )
                             => ( X1 @ ( sub @ X4 @ ( push @ X2 @ X3 ) ) ) ) ) )
                   => ( ! [X1: term > $o] :
                          ( ! [X2: term,X3: term] :
                              ( ( X1 @ X2 )
                             => ( ( X1 @ X3 )
                               => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                         => ( ! [X2: term] :
                                ( ! [X3: term] :
                                    ( ( X1 @ X3 )
                                   => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                               => ( X1 @ ( lam @ X2 ) ) )
                           => ! [X2: term,X3: subst] :
                                ( ! [X4: term] :
                                    ( ( var @ X4 )
                                   => ( X1 @ ( sub @ X4 @ X3 ) ) )
                               => ( X1 @ ( sub @ X2 @ X3 ) ) ) ) )
                     => ( ! [X1: term > $o] :
                            ( ! [X2: term] :
                                ( ( var @ X2 )
                               => ( X1 @ X2 ) )
                           => ( ! [X2: term,X3: term] :
                                  ( ( X1 @ X2 )
                                 => ( ( X1 @ X3 )
                                   => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                             => ( ! [X2: term] :
                                    ( ! [X3: term] :
                                        ( ( X1 @ X3 )
                                       => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                                   => ( X1 @ ( lam @ X2 ) ) )
                               => ! [X2: term] : ( X1 @ X2 ) ) ) )
                       => ( ~ ( ~ ( ! [X1: subst,X2: subst,X3: subst] :
                                      ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
                                      = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
                                 => ~ ! [X1: subst] :
                                        ( ( comp @ id @ X1 )
                                        = X1 ) )
                             => ~ ! [X1: subst] :
                                    ( ( comp @ X1 @ id )
                                    = X1 ) )
                         => ( ~ ( ! [X1: term,X2: subst,X3: subst] :
                                    ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
                                    = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) )
                               => ~ sP1 )
                           => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                  ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                    = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                                 => ( X1 = X2 ) )
                             => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                    ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                      = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                                   => ( X3 = X4 ) )
                               => ( ! [X1: subst > term > term] :
                                      ( ! [X2: subst,X3: term,X4: subst] :
                                          ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                          = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                     => ! [X2: subst > term > term] :
                                          ( ! [X3: subst,X4: term,X5: subst] :
                                              ( ( sub @ ( X2 @ X3 @ X4 ) @ X5 )
                                              = ( X2 @ ( comp @ X3 @ X5 ) @ ( sub @ X4 @ X5 ) ) )
                                         => ( ( ( lam @ ( X1 @ sh @ one ) )
                                              = ( lam @ ( X2 @ sh @ one ) ) )
                                           => ! [X3: subst,X4: term] :
                                                ( ( X1 @ X3 @ X4 )
                                                = ( X2 @ X3 @ X4 ) ) ) ) )
                                 => ( ! [X1: subst > term > term] :
                                        ( ! [X2: subst,X3: term,X4: subst] :
                                            ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                            = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                       => ! [X2: term,X3: term] :
                                            ( ( lam @ ( X1 @ sh @ one ) )
                                           != ( ap @ ( sub @ X2 @ id ) @ X3 ) ) )
                                   => ( ! [X1: subst > term > term] :
                                          ( ! [X2: subst,X3: term,X4: subst] :
                                              ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                              = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                         => ~ ( var @ ( sub @ ( lam @ ( X1 @ sh @ one ) ) @ id ) ) )
                                     => ! [X1: term,X2: term] :
                                          ~ ( var @ ( sub @ ( ap @ ( sub @ X1 @ id ) @ X2 ) @ id ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ),
    introduced(assumption,[]) ).

thf(h33,assumption,
    ! [X1: term,X2: term,X3: term,X4: term] :
      ( ( ( ap @ X1 @ X3 )
        = ( ap @ X2 @ X4 ) )
     => ( X3 = X4 ) ),
    introduced(assumption,[]) ).

thf(h34,assumption,
    ~ ( ! [X1: term,X2: term] :
          ( ( ( lam @ X1 )
            = ( lam @ X2 ) )
         => ( X1 = X2 ) )
     => ( ! [X1: term,X2: term] :
            ( ( ( sub @ X1 @ sh )
              = ( sub @ X2 @ sh ) )
           => ( X1 = X2 ) )
       => ( ! [X1: term,X2: term,X3: term] :
              ( ( lam @ X1 )
             != ( ap @ X2 @ X3 ) )
         => ( sP4
           => ( ! [X1: term] :
                  ~ ( var @ ( lam @ X1 ) )
             => ( ! [X1: term > $o] :
                    ( ! [X2: term] :
                        ( ( var @ X2 )
                       => ( X1 @ X2 ) )
                   => ( ! [X2: term,X3: term] :
                          ( ( X1 @ X2 )
                         => ( ( X1 @ X3 )
                           => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                     => ( ! [X2: term] :
                            ( ( X1 @ X2 )
                           => ( X1 @ ( lam @ X2 ) ) )
                       => ! [X2: term] : ( X1 @ X2 ) ) ) )
               => ( ! [X1: term > $o,X2: term,X3: subst] :
                      ( ! [X4: term] :
                          ( ( var @ X4 )
                         => ( X1 @ ( sub @ X4 @ X3 ) ) )
                     => ( ( X1 @ X2 )
                       => ! [X4: term] :
                            ( ( var @ X4 )
                           => ( X1 @ ( sub @ X4 @ ( push @ X2 @ X3 ) ) ) ) ) )
                 => ( ! [X1: term > $o] :
                        ( ! [X2: term,X3: term] :
                            ( ( X1 @ X2 )
                           => ( ( X1 @ X3 )
                             => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                       => ( ! [X2: term] :
                              ( ! [X3: term] :
                                  ( ( X1 @ X3 )
                                 => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                             => ( X1 @ ( lam @ X2 ) ) )
                         => ! [X2: term,X3: subst] :
                              ( ! [X4: term] :
                                  ( ( var @ X4 )
                                 => ( X1 @ ( sub @ X4 @ X3 ) ) )
                             => ( X1 @ ( sub @ X2 @ X3 ) ) ) ) )
                   => ( ! [X1: term > $o] :
                          ( ! [X2: term] :
                              ( ( var @ X2 )
                             => ( X1 @ X2 ) )
                         => ( ! [X2: term,X3: term] :
                                ( ( X1 @ X2 )
                               => ( ( X1 @ X3 )
                                 => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                           => ( ! [X2: term] :
                                  ( ! [X3: term] :
                                      ( ( X1 @ X3 )
                                     => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                                 => ( X1 @ ( lam @ X2 ) ) )
                             => ! [X2: term] : ( X1 @ X2 ) ) ) )
                     => ( ~ ( ~ ( ! [X1: subst,X2: subst,X3: subst] :
                                    ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
                                    = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
                               => ~ ! [X1: subst] :
                                      ( ( comp @ id @ X1 )
                                      = X1 ) )
                           => ~ ! [X1: subst] :
                                  ( ( comp @ X1 @ id )
                                  = X1 ) )
                       => ( ~ ( ! [X1: term,X2: subst,X3: subst] :
                                  ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
                                  = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) )
                             => ~ sP1 )
                         => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                  = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                               => ( X1 = X2 ) )
                           => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                  ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                    = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                                 => ( X3 = X4 ) )
                             => ( ! [X1: subst > term > term] :
                                    ( ! [X2: subst,X3: term,X4: subst] :
                                        ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                        = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                   => ! [X2: subst > term > term] :
                                        ( ! [X3: subst,X4: term,X5: subst] :
                                            ( ( sub @ ( X2 @ X3 @ X4 ) @ X5 )
                                            = ( X2 @ ( comp @ X3 @ X5 ) @ ( sub @ X4 @ X5 ) ) )
                                       => ( ( ( lam @ ( X1 @ sh @ one ) )
                                            = ( lam @ ( X2 @ sh @ one ) ) )
                                         => ! [X3: subst,X4: term] :
                                              ( ( X1 @ X3 @ X4 )
                                              = ( X2 @ X3 @ X4 ) ) ) ) )
                               => ( ! [X1: subst > term > term] :
                                      ( ! [X2: subst,X3: term,X4: subst] :
                                          ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                          = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                     => ! [X2: term,X3: term] :
                                          ( ( lam @ ( X1 @ sh @ one ) )
                                         != ( ap @ ( sub @ X2 @ id ) @ X3 ) ) )
                                 => ( ! [X1: subst > term > term] :
                                        ( ! [X2: subst,X3: term,X4: subst] :
                                            ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                            = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                       => ~ ( var @ ( sub @ ( lam @ ( X1 @ sh @ one ) ) @ id ) ) )
                                   => ! [X1: term,X2: term] :
                                        ~ ( var @ ( sub @ ( ap @ ( sub @ X1 @ id ) @ X2 ) @ id ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ),
    introduced(assumption,[]) ).

thf(h35,assumption,
    ! [X1: term,X2: term] :
      ( ( ( lam @ X1 )
        = ( lam @ X2 ) )
     => ( X1 = X2 ) ),
    introduced(assumption,[]) ).

thf(h36,assumption,
    ~ ( ! [X1: term,X2: term] :
          ( ( ( sub @ X1 @ sh )
            = ( sub @ X2 @ sh ) )
         => ( X1 = X2 ) )
     => ( ! [X1: term,X2: term,X3: term] :
            ( ( lam @ X1 )
           != ( ap @ X2 @ X3 ) )
       => ( sP4
         => ( ! [X1: term] :
                ~ ( var @ ( lam @ X1 ) )
           => ( ! [X1: term > $o] :
                  ( ! [X2: term] :
                      ( ( var @ X2 )
                     => ( X1 @ X2 ) )
                 => ( ! [X2: term,X3: term] :
                        ( ( X1 @ X2 )
                       => ( ( X1 @ X3 )
                         => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                   => ( ! [X2: term] :
                          ( ( X1 @ X2 )
                         => ( X1 @ ( lam @ X2 ) ) )
                     => ! [X2: term] : ( X1 @ X2 ) ) ) )
             => ( ! [X1: term > $o,X2: term,X3: subst] :
                    ( ! [X4: term] :
                        ( ( var @ X4 )
                       => ( X1 @ ( sub @ X4 @ X3 ) ) )
                   => ( ( X1 @ X2 )
                     => ! [X4: term] :
                          ( ( var @ X4 )
                         => ( X1 @ ( sub @ X4 @ ( push @ X2 @ X3 ) ) ) ) ) )
               => ( ! [X1: term > $o] :
                      ( ! [X2: term,X3: term] :
                          ( ( X1 @ X2 )
                         => ( ( X1 @ X3 )
                           => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                     => ( ! [X2: term] :
                            ( ! [X3: term] :
                                ( ( X1 @ X3 )
                               => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                           => ( X1 @ ( lam @ X2 ) ) )
                       => ! [X2: term,X3: subst] :
                            ( ! [X4: term] :
                                ( ( var @ X4 )
                               => ( X1 @ ( sub @ X4 @ X3 ) ) )
                           => ( X1 @ ( sub @ X2 @ X3 ) ) ) ) )
                 => ( ! [X1: term > $o] :
                        ( ! [X2: term] :
                            ( ( var @ X2 )
                           => ( X1 @ X2 ) )
                       => ( ! [X2: term,X3: term] :
                              ( ( X1 @ X2 )
                             => ( ( X1 @ X3 )
                               => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                         => ( ! [X2: term] :
                                ( ! [X3: term] :
                                    ( ( X1 @ X3 )
                                   => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                               => ( X1 @ ( lam @ X2 ) ) )
                           => ! [X2: term] : ( X1 @ X2 ) ) ) )
                   => ( ~ ( ~ ( ! [X1: subst,X2: subst,X3: subst] :
                                  ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
                                  = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
                             => ~ ! [X1: subst] :
                                    ( ( comp @ id @ X1 )
                                    = X1 ) )
                         => ~ ! [X1: subst] :
                                ( ( comp @ X1 @ id )
                                = X1 ) )
                     => ( ~ ( ! [X1: term,X2: subst,X3: subst] :
                                ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
                                = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) )
                           => ~ sP1 )
                       => ( ! [X1: term,X2: term,X3: term,X4: term] :
                              ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                             => ( X1 = X2 ) )
                         => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                  = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                               => ( X3 = X4 ) )
                           => ( ! [X1: subst > term > term] :
                                  ( ! [X2: subst,X3: term,X4: subst] :
                                      ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                      = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                 => ! [X2: subst > term > term] :
                                      ( ! [X3: subst,X4: term,X5: subst] :
                                          ( ( sub @ ( X2 @ X3 @ X4 ) @ X5 )
                                          = ( X2 @ ( comp @ X3 @ X5 ) @ ( sub @ X4 @ X5 ) ) )
                                     => ( ( ( lam @ ( X1 @ sh @ one ) )
                                          = ( lam @ ( X2 @ sh @ one ) ) )
                                       => ! [X3: subst,X4: term] :
                                            ( ( X1 @ X3 @ X4 )
                                            = ( X2 @ X3 @ X4 ) ) ) ) )
                             => ( ! [X1: subst > term > term] :
                                    ( ! [X2: subst,X3: term,X4: subst] :
                                        ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                        = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                   => ! [X2: term,X3: term] :
                                        ( ( lam @ ( X1 @ sh @ one ) )
                                       != ( ap @ ( sub @ X2 @ id ) @ X3 ) ) )
                               => ( ! [X1: subst > term > term] :
                                      ( ! [X2: subst,X3: term,X4: subst] :
                                          ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                          = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                     => ~ ( var @ ( sub @ ( lam @ ( X1 @ sh @ one ) ) @ id ) ) )
                                 => ! [X1: term,X2: term] :
                                      ~ ( var @ ( sub @ ( ap @ ( sub @ X1 @ id ) @ X2 ) @ id ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ),
    introduced(assumption,[]) ).

thf(h37,assumption,
    ! [X1: term,X2: term] :
      ( ( ( sub @ X1 @ sh )
        = ( sub @ X2 @ sh ) )
     => ( X1 = X2 ) ),
    introduced(assumption,[]) ).

thf(h38,assumption,
    ~ ( ! [X1: term,X2: term,X3: term] :
          ( ( lam @ X1 )
         != ( ap @ X2 @ X3 ) )
     => ( sP4
       => ( ! [X1: term] :
              ~ ( var @ ( lam @ X1 ) )
         => ( ! [X1: term > $o] :
                ( ! [X2: term] :
                    ( ( var @ X2 )
                   => ( X1 @ X2 ) )
               => ( ! [X2: term,X3: term] :
                      ( ( X1 @ X2 )
                     => ( ( X1 @ X3 )
                       => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                 => ( ! [X2: term] :
                        ( ( X1 @ X2 )
                       => ( X1 @ ( lam @ X2 ) ) )
                   => ! [X2: term] : ( X1 @ X2 ) ) ) )
           => ( ! [X1: term > $o,X2: term,X3: subst] :
                  ( ! [X4: term] :
                      ( ( var @ X4 )
                     => ( X1 @ ( sub @ X4 @ X3 ) ) )
                 => ( ( X1 @ X2 )
                   => ! [X4: term] :
                        ( ( var @ X4 )
                       => ( X1 @ ( sub @ X4 @ ( push @ X2 @ X3 ) ) ) ) ) )
             => ( ! [X1: term > $o] :
                    ( ! [X2: term,X3: term] :
                        ( ( X1 @ X2 )
                       => ( ( X1 @ X3 )
                         => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                   => ( ! [X2: term] :
                          ( ! [X3: term] :
                              ( ( X1 @ X3 )
                             => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                         => ( X1 @ ( lam @ X2 ) ) )
                     => ! [X2: term,X3: subst] :
                          ( ! [X4: term] :
                              ( ( var @ X4 )
                             => ( X1 @ ( sub @ X4 @ X3 ) ) )
                         => ( X1 @ ( sub @ X2 @ X3 ) ) ) ) )
               => ( ! [X1: term > $o] :
                      ( ! [X2: term] :
                          ( ( var @ X2 )
                         => ( X1 @ X2 ) )
                     => ( ! [X2: term,X3: term] :
                            ( ( X1 @ X2 )
                           => ( ( X1 @ X3 )
                             => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                       => ( ! [X2: term] :
                              ( ! [X3: term] :
                                  ( ( X1 @ X3 )
                                 => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                             => ( X1 @ ( lam @ X2 ) ) )
                         => ! [X2: term] : ( X1 @ X2 ) ) ) )
                 => ( ~ ( ~ ( ! [X1: subst,X2: subst,X3: subst] :
                                ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
                                = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
                           => ~ ! [X1: subst] :
                                  ( ( comp @ id @ X1 )
                                  = X1 ) )
                       => ~ ! [X1: subst] :
                              ( ( comp @ X1 @ id )
                              = X1 ) )
                   => ( ~ ( ! [X1: term,X2: subst,X3: subst] :
                              ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
                              = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) )
                         => ~ sP1 )
                     => ( ! [X1: term,X2: term,X3: term,X4: term] :
                            ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                              = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                           => ( X1 = X2 ) )
                       => ( ! [X1: term,X2: term,X3: term,X4: term] :
                              ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                             => ( X3 = X4 ) )
                         => ( ! [X1: subst > term > term] :
                                ( ! [X2: subst,X3: term,X4: subst] :
                                    ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                    = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                               => ! [X2: subst > term > term] :
                                    ( ! [X3: subst,X4: term,X5: subst] :
                                        ( ( sub @ ( X2 @ X3 @ X4 ) @ X5 )
                                        = ( X2 @ ( comp @ X3 @ X5 ) @ ( sub @ X4 @ X5 ) ) )
                                   => ( ( ( lam @ ( X1 @ sh @ one ) )
                                        = ( lam @ ( X2 @ sh @ one ) ) )
                                     => ! [X3: subst,X4: term] :
                                          ( ( X1 @ X3 @ X4 )
                                          = ( X2 @ X3 @ X4 ) ) ) ) )
                           => ( ! [X1: subst > term > term] :
                                  ( ! [X2: subst,X3: term,X4: subst] :
                                      ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                      = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                 => ! [X2: term,X3: term] :
                                      ( ( lam @ ( X1 @ sh @ one ) )
                                     != ( ap @ ( sub @ X2 @ id ) @ X3 ) ) )
                             => ( ! [X1: subst > term > term] :
                                    ( ! [X2: subst,X3: term,X4: subst] :
                                        ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                        = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                   => ~ ( var @ ( sub @ ( lam @ ( X1 @ sh @ one ) ) @ id ) ) )
                               => ! [X1: term,X2: term] :
                                    ~ ( var @ ( sub @ ( ap @ ( sub @ X1 @ id ) @ X2 ) @ id ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ),
    introduced(assumption,[]) ).

thf(h39,assumption,
    ! [X1: term,X2: term,X3: term] :
      ( ( lam @ X1 )
     != ( ap @ X2 @ X3 ) ),
    introduced(assumption,[]) ).

thf(h40,assumption,
    ~ ( sP4
     => ( ! [X1: term] :
            ~ ( var @ ( lam @ X1 ) )
       => ( ! [X1: term > $o] :
              ( ! [X2: term] :
                  ( ( var @ X2 )
                 => ( X1 @ X2 ) )
             => ( ! [X2: term,X3: term] :
                    ( ( X1 @ X2 )
                   => ( ( X1 @ X3 )
                     => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
               => ( ! [X2: term] :
                      ( ( X1 @ X2 )
                     => ( X1 @ ( lam @ X2 ) ) )
                 => ! [X2: term] : ( X1 @ X2 ) ) ) )
         => ( ! [X1: term > $o,X2: term,X3: subst] :
                ( ! [X4: term] :
                    ( ( var @ X4 )
                   => ( X1 @ ( sub @ X4 @ X3 ) ) )
               => ( ( X1 @ X2 )
                 => ! [X4: term] :
                      ( ( var @ X4 )
                     => ( X1 @ ( sub @ X4 @ ( push @ X2 @ X3 ) ) ) ) ) )
           => ( ! [X1: term > $o] :
                  ( ! [X2: term,X3: term] :
                      ( ( X1 @ X2 )
                     => ( ( X1 @ X3 )
                       => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                 => ( ! [X2: term] :
                        ( ! [X3: term] :
                            ( ( X1 @ X3 )
                           => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                       => ( X1 @ ( lam @ X2 ) ) )
                   => ! [X2: term,X3: subst] :
                        ( ! [X4: term] :
                            ( ( var @ X4 )
                           => ( X1 @ ( sub @ X4 @ X3 ) ) )
                       => ( X1 @ ( sub @ X2 @ X3 ) ) ) ) )
             => ( ! [X1: term > $o] :
                    ( ! [X2: term] :
                        ( ( var @ X2 )
                       => ( X1 @ X2 ) )
                   => ( ! [X2: term,X3: term] :
                          ( ( X1 @ X2 )
                         => ( ( X1 @ X3 )
                           => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                     => ( ! [X2: term] :
                            ( ! [X3: term] :
                                ( ( X1 @ X3 )
                               => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                           => ( X1 @ ( lam @ X2 ) ) )
                       => ! [X2: term] : ( X1 @ X2 ) ) ) )
               => ( ~ ( ~ ( ! [X1: subst,X2: subst,X3: subst] :
                              ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
                              = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
                         => ~ ! [X1: subst] :
                                ( ( comp @ id @ X1 )
                                = X1 ) )
                     => ~ ! [X1: subst] :
                            ( ( comp @ X1 @ id )
                            = X1 ) )
                 => ( ~ ( ! [X1: term,X2: subst,X3: subst] :
                            ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
                            = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) )
                       => ~ sP1 )
                   => ( ! [X1: term,X2: term,X3: term,X4: term] :
                          ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                            = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                         => ( X1 = X2 ) )
                     => ( ! [X1: term,X2: term,X3: term,X4: term] :
                            ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                              = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                           => ( X3 = X4 ) )
                       => ( ! [X1: subst > term > term] :
                              ( ! [X2: subst,X3: term,X4: subst] :
                                  ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                  = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                             => ! [X2: subst > term > term] :
                                  ( ! [X3: subst,X4: term,X5: subst] :
                                      ( ( sub @ ( X2 @ X3 @ X4 ) @ X5 )
                                      = ( X2 @ ( comp @ X3 @ X5 ) @ ( sub @ X4 @ X5 ) ) )
                                 => ( ( ( lam @ ( X1 @ sh @ one ) )
                                      = ( lam @ ( X2 @ sh @ one ) ) )
                                   => ! [X3: subst,X4: term] :
                                        ( ( X1 @ X3 @ X4 )
                                        = ( X2 @ X3 @ X4 ) ) ) ) )
                         => ( ! [X1: subst > term > term] :
                                ( ! [X2: subst,X3: term,X4: subst] :
                                    ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                    = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                               => ! [X2: term,X3: term] :
                                    ( ( lam @ ( X1 @ sh @ one ) )
                                   != ( ap @ ( sub @ X2 @ id ) @ X3 ) ) )
                           => ( ! [X1: subst > term > term] :
                                  ( ! [X2: subst,X3: term,X4: subst] :
                                      ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                      = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                 => ~ ( var @ ( sub @ ( lam @ ( X1 @ sh @ one ) ) @ id ) ) )
                             => ! [X1: term,X2: term] :
                                  ~ ( var @ ( sub @ ( ap @ ( sub @ X1 @ id ) @ X2 ) @ id ) ) ) ) ) ) ) ) ) ) ) ) ) ) ),
    introduced(assumption,[]) ).

thf(h41,assumption,
    sP4,
    introduced(assumption,[]) ).

thf(h42,assumption,
    ~ ( ! [X1: term] :
          ~ ( var @ ( lam @ X1 ) )
     => ( ! [X1: term > $o] :
            ( ! [X2: term] :
                ( ( var @ X2 )
               => ( X1 @ X2 ) )
           => ( ! [X2: term,X3: term] :
                  ( ( X1 @ X2 )
                 => ( ( X1 @ X3 )
                   => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
             => ( ! [X2: term] :
                    ( ( X1 @ X2 )
                   => ( X1 @ ( lam @ X2 ) ) )
               => ! [X2: term] : ( X1 @ X2 ) ) ) )
       => ( ! [X1: term > $o,X2: term,X3: subst] :
              ( ! [X4: term] :
                  ( ( var @ X4 )
                 => ( X1 @ ( sub @ X4 @ X3 ) ) )
             => ( ( X1 @ X2 )
               => ! [X4: term] :
                    ( ( var @ X4 )
                   => ( X1 @ ( sub @ X4 @ ( push @ X2 @ X3 ) ) ) ) ) )
         => ( ! [X1: term > $o] :
                ( ! [X2: term,X3: term] :
                    ( ( X1 @ X2 )
                   => ( ( X1 @ X3 )
                     => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
               => ( ! [X2: term] :
                      ( ! [X3: term] :
                          ( ( X1 @ X3 )
                         => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                     => ( X1 @ ( lam @ X2 ) ) )
                 => ! [X2: term,X3: subst] :
                      ( ! [X4: term] :
                          ( ( var @ X4 )
                         => ( X1 @ ( sub @ X4 @ X3 ) ) )
                     => ( X1 @ ( sub @ X2 @ X3 ) ) ) ) )
           => ( ! [X1: term > $o] :
                  ( ! [X2: term] :
                      ( ( var @ X2 )
                     => ( X1 @ X2 ) )
                 => ( ! [X2: term,X3: term] :
                        ( ( X1 @ X2 )
                       => ( ( X1 @ X3 )
                         => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                   => ( ! [X2: term] :
                          ( ! [X3: term] :
                              ( ( X1 @ X3 )
                             => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                         => ( X1 @ ( lam @ X2 ) ) )
                     => ! [X2: term] : ( X1 @ X2 ) ) ) )
             => ( ~ ( ~ ( ! [X1: subst,X2: subst,X3: subst] :
                            ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
                            = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
                       => ~ ! [X1: subst] :
                              ( ( comp @ id @ X1 )
                              = X1 ) )
                   => ~ ! [X1: subst] :
                          ( ( comp @ X1 @ id )
                          = X1 ) )
               => ( ~ ( ! [X1: term,X2: subst,X3: subst] :
                          ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
                          = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) )
                     => ~ sP1 )
                 => ( ! [X1: term,X2: term,X3: term,X4: term] :
                        ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                          = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                       => ( X1 = X2 ) )
                   => ( ! [X1: term,X2: term,X3: term,X4: term] :
                          ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                            = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                         => ( X3 = X4 ) )
                     => ( ! [X1: subst > term > term] :
                            ( ! [X2: subst,X3: term,X4: subst] :
                                ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                           => ! [X2: subst > term > term] :
                                ( ! [X3: subst,X4: term,X5: subst] :
                                    ( ( sub @ ( X2 @ X3 @ X4 ) @ X5 )
                                    = ( X2 @ ( comp @ X3 @ X5 ) @ ( sub @ X4 @ X5 ) ) )
                               => ( ( ( lam @ ( X1 @ sh @ one ) )
                                    = ( lam @ ( X2 @ sh @ one ) ) )
                                 => ! [X3: subst,X4: term] :
                                      ( ( X1 @ X3 @ X4 )
                                      = ( X2 @ X3 @ X4 ) ) ) ) )
                       => ( ! [X1: subst > term > term] :
                              ( ! [X2: subst,X3: term,X4: subst] :
                                  ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                  = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                             => ! [X2: term,X3: term] :
                                  ( ( lam @ ( X1 @ sh @ one ) )
                                 != ( ap @ ( sub @ X2 @ id ) @ X3 ) ) )
                         => ( ! [X1: subst > term > term] :
                                ( ! [X2: subst,X3: term,X4: subst] :
                                    ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                    = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                               => ~ ( var @ ( sub @ ( lam @ ( X1 @ sh @ one ) ) @ id ) ) )
                           => ! [X1: term,X2: term] :
                                ~ ( var @ ( sub @ ( ap @ ( sub @ X1 @ id ) @ X2 ) @ id ) ) ) ) ) ) ) ) ) ) ) ) ) ),
    introduced(assumption,[]) ).

thf(h43,assumption,
    ! [X1: term] :
      ~ ( var @ ( lam @ X1 ) ),
    introduced(assumption,[]) ).

thf(h44,assumption,
    ~ ( ! [X1: term > $o] :
          ( ! [X2: term] :
              ( ( var @ X2 )
             => ( X1 @ X2 ) )
         => ( ! [X2: term,X3: term] :
                ( ( X1 @ X2 )
               => ( ( X1 @ X3 )
                 => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
           => ( ! [X2: term] :
                  ( ( X1 @ X2 )
                 => ( X1 @ ( lam @ X2 ) ) )
             => ! [X2: term] : ( X1 @ X2 ) ) ) )
     => ( ! [X1: term > $o,X2: term,X3: subst] :
            ( ! [X4: term] :
                ( ( var @ X4 )
               => ( X1 @ ( sub @ X4 @ X3 ) ) )
           => ( ( X1 @ X2 )
             => ! [X4: term] :
                  ( ( var @ X4 )
                 => ( X1 @ ( sub @ X4 @ ( push @ X2 @ X3 ) ) ) ) ) )
       => ( ! [X1: term > $o] :
              ( ! [X2: term,X3: term] :
                  ( ( X1 @ X2 )
                 => ( ( X1 @ X3 )
                   => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
             => ( ! [X2: term] :
                    ( ! [X3: term] :
                        ( ( X1 @ X3 )
                       => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                   => ( X1 @ ( lam @ X2 ) ) )
               => ! [X2: term,X3: subst] :
                    ( ! [X4: term] :
                        ( ( var @ X4 )
                       => ( X1 @ ( sub @ X4 @ X3 ) ) )
                   => ( X1 @ ( sub @ X2 @ X3 ) ) ) ) )
         => ( ! [X1: term > $o] :
                ( ! [X2: term] :
                    ( ( var @ X2 )
                   => ( X1 @ X2 ) )
               => ( ! [X2: term,X3: term] :
                      ( ( X1 @ X2 )
                     => ( ( X1 @ X3 )
                       => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                 => ( ! [X2: term] :
                        ( ! [X3: term] :
                            ( ( X1 @ X3 )
                           => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                       => ( X1 @ ( lam @ X2 ) ) )
                   => ! [X2: term] : ( X1 @ X2 ) ) ) )
           => ( ~ ( ~ ( ! [X1: subst,X2: subst,X3: subst] :
                          ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
                          = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
                     => ~ ! [X1: subst] :
                            ( ( comp @ id @ X1 )
                            = X1 ) )
                 => ~ ! [X1: subst] :
                        ( ( comp @ X1 @ id )
                        = X1 ) )
             => ( ~ ( ! [X1: term,X2: subst,X3: subst] :
                        ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
                        = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) )
                   => ~ sP1 )
               => ( ! [X1: term,X2: term,X3: term,X4: term] :
                      ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                        = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                     => ( X1 = X2 ) )
                 => ( ! [X1: term,X2: term,X3: term,X4: term] :
                        ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                          = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                       => ( X3 = X4 ) )
                   => ( ! [X1: subst > term > term] :
                          ( ! [X2: subst,X3: term,X4: subst] :
                              ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                              = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                         => ! [X2: subst > term > term] :
                              ( ! [X3: subst,X4: term,X5: subst] :
                                  ( ( sub @ ( X2 @ X3 @ X4 ) @ X5 )
                                  = ( X2 @ ( comp @ X3 @ X5 ) @ ( sub @ X4 @ X5 ) ) )
                             => ( ( ( lam @ ( X1 @ sh @ one ) )
                                  = ( lam @ ( X2 @ sh @ one ) ) )
                               => ! [X3: subst,X4: term] :
                                    ( ( X1 @ X3 @ X4 )
                                    = ( X2 @ X3 @ X4 ) ) ) ) )
                     => ( ! [X1: subst > term > term] :
                            ( ! [X2: subst,X3: term,X4: subst] :
                                ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                           => ! [X2: term,X3: term] :
                                ( ( lam @ ( X1 @ sh @ one ) )
                               != ( ap @ ( sub @ X2 @ id ) @ X3 ) ) )
                       => ( ! [X1: subst > term > term] :
                              ( ! [X2: subst,X3: term,X4: subst] :
                                  ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                  = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                             => ~ ( var @ ( sub @ ( lam @ ( X1 @ sh @ one ) ) @ id ) ) )
                         => ! [X1: term,X2: term] :
                              ~ ( var @ ( sub @ ( ap @ ( sub @ X1 @ id ) @ X2 ) @ id ) ) ) ) ) ) ) ) ) ) ) ) ),
    introduced(assumption,[]) ).

thf(h45,assumption,
    ! [X1: term > $o] :
      ( ! [X2: term] :
          ( ( var @ X2 )
         => ( X1 @ X2 ) )
     => ( ! [X2: term,X3: term] :
            ( ( X1 @ X2 )
           => ( ( X1 @ X3 )
             => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
       => ( ! [X2: term] :
              ( ( X1 @ X2 )
             => ( X1 @ ( lam @ X2 ) ) )
         => ! [X2: term] : ( X1 @ X2 ) ) ) ),
    introduced(assumption,[]) ).

thf(h46,assumption,
    ~ ( ! [X1: term > $o,X2: term,X3: subst] :
          ( ! [X4: term] :
              ( ( var @ X4 )
             => ( X1 @ ( sub @ X4 @ X3 ) ) )
         => ( ( X1 @ X2 )
           => ! [X4: term] :
                ( ( var @ X4 )
               => ( X1 @ ( sub @ X4 @ ( push @ X2 @ X3 ) ) ) ) ) )
     => ( ! [X1: term > $o] :
            ( ! [X2: term,X3: term] :
                ( ( X1 @ X2 )
               => ( ( X1 @ X3 )
                 => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
           => ( ! [X2: term] :
                  ( ! [X3: term] :
                      ( ( X1 @ X3 )
                     => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                 => ( X1 @ ( lam @ X2 ) ) )
             => ! [X2: term,X3: subst] :
                  ( ! [X4: term] :
                      ( ( var @ X4 )
                     => ( X1 @ ( sub @ X4 @ X3 ) ) )
                 => ( X1 @ ( sub @ X2 @ X3 ) ) ) ) )
       => ( ! [X1: term > $o] :
              ( ! [X2: term] :
                  ( ( var @ X2 )
                 => ( X1 @ X2 ) )
             => ( ! [X2: term,X3: term] :
                    ( ( X1 @ X2 )
                   => ( ( X1 @ X3 )
                     => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
               => ( ! [X2: term] :
                      ( ! [X3: term] :
                          ( ( X1 @ X3 )
                         => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                     => ( X1 @ ( lam @ X2 ) ) )
                 => ! [X2: term] : ( X1 @ X2 ) ) ) )
         => ( ~ ( ~ ( ! [X1: subst,X2: subst,X3: subst] :
                        ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
                        = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
                   => ~ ! [X1: subst] :
                          ( ( comp @ id @ X1 )
                          = X1 ) )
               => ~ ! [X1: subst] :
                      ( ( comp @ X1 @ id )
                      = X1 ) )
           => ( ~ ( ! [X1: term,X2: subst,X3: subst] :
                      ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
                      = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) )
                 => ~ sP1 )
             => ( ! [X1: term,X2: term,X3: term,X4: term] :
                    ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                      = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                   => ( X1 = X2 ) )
               => ( ! [X1: term,X2: term,X3: term,X4: term] :
                      ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                        = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                     => ( X3 = X4 ) )
                 => ( ! [X1: subst > term > term] :
                        ( ! [X2: subst,X3: term,X4: subst] :
                            ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                            = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                       => ! [X2: subst > term > term] :
                            ( ! [X3: subst,X4: term,X5: subst] :
                                ( ( sub @ ( X2 @ X3 @ X4 ) @ X5 )
                                = ( X2 @ ( comp @ X3 @ X5 ) @ ( sub @ X4 @ X5 ) ) )
                           => ( ( ( lam @ ( X1 @ sh @ one ) )
                                = ( lam @ ( X2 @ sh @ one ) ) )
                             => ! [X3: subst,X4: term] :
                                  ( ( X1 @ X3 @ X4 )
                                  = ( X2 @ X3 @ X4 ) ) ) ) )
                   => ( ! [X1: subst > term > term] :
                          ( ! [X2: subst,X3: term,X4: subst] :
                              ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                              = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                         => ! [X2: term,X3: term] :
                              ( ( lam @ ( X1 @ sh @ one ) )
                             != ( ap @ ( sub @ X2 @ id ) @ X3 ) ) )
                     => ( ! [X1: subst > term > term] :
                            ( ! [X2: subst,X3: term,X4: subst] :
                                ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                           => ~ ( var @ ( sub @ ( lam @ ( X1 @ sh @ one ) ) @ id ) ) )
                       => ! [X1: term,X2: term] :
                            ~ ( var @ ( sub @ ( ap @ ( sub @ X1 @ id ) @ X2 ) @ id ) ) ) ) ) ) ) ) ) ) ) ),
    introduced(assumption,[]) ).

thf(h47,assumption,
    ! [X1: term > $o,X2: term,X3: subst] :
      ( ! [X4: term] :
          ( ( var @ X4 )
         => ( X1 @ ( sub @ X4 @ X3 ) ) )
     => ( ( X1 @ X2 )
       => ! [X4: term] :
            ( ( var @ X4 )
           => ( X1 @ ( sub @ X4 @ ( push @ X2 @ X3 ) ) ) ) ) ),
    introduced(assumption,[]) ).

thf(h48,assumption,
    ~ ( ! [X1: term > $o] :
          ( ! [X2: term,X3: term] :
              ( ( X1 @ X2 )
             => ( ( X1 @ X3 )
               => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
         => ( ! [X2: term] :
                ( ! [X3: term] :
                    ( ( X1 @ X3 )
                   => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
               => ( X1 @ ( lam @ X2 ) ) )
           => ! [X2: term,X3: subst] :
                ( ! [X4: term] :
                    ( ( var @ X4 )
                   => ( X1 @ ( sub @ X4 @ X3 ) ) )
               => ( X1 @ ( sub @ X2 @ X3 ) ) ) ) )
     => ( ! [X1: term > $o] :
            ( ! [X2: term] :
                ( ( var @ X2 )
               => ( X1 @ X2 ) )
           => ( ! [X2: term,X3: term] :
                  ( ( X1 @ X2 )
                 => ( ( X1 @ X3 )
                   => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
             => ( ! [X2: term] :
                    ( ! [X3: term] :
                        ( ( X1 @ X3 )
                       => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                   => ( X1 @ ( lam @ X2 ) ) )
               => ! [X2: term] : ( X1 @ X2 ) ) ) )
       => ( ~ ( ~ ( ! [X1: subst,X2: subst,X3: subst] :
                      ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
                      = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
                 => ~ ! [X1: subst] :
                        ( ( comp @ id @ X1 )
                        = X1 ) )
             => ~ ! [X1: subst] :
                    ( ( comp @ X1 @ id )
                    = X1 ) )
         => ( ~ ( ! [X1: term,X2: subst,X3: subst] :
                    ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
                    = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) )
               => ~ sP1 )
           => ( ! [X1: term,X2: term,X3: term,X4: term] :
                  ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                    = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                 => ( X1 = X2 ) )
             => ( ! [X1: term,X2: term,X3: term,X4: term] :
                    ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                      = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                   => ( X3 = X4 ) )
               => ( ! [X1: subst > term > term] :
                      ( ! [X2: subst,X3: term,X4: subst] :
                          ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                          = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                     => ! [X2: subst > term > term] :
                          ( ! [X3: subst,X4: term,X5: subst] :
                              ( ( sub @ ( X2 @ X3 @ X4 ) @ X5 )
                              = ( X2 @ ( comp @ X3 @ X5 ) @ ( sub @ X4 @ X5 ) ) )
                         => ( ( ( lam @ ( X1 @ sh @ one ) )
                              = ( lam @ ( X2 @ sh @ one ) ) )
                           => ! [X3: subst,X4: term] :
                                ( ( X1 @ X3 @ X4 )
                                = ( X2 @ X3 @ X4 ) ) ) ) )
                 => ( ! [X1: subst > term > term] :
                        ( ! [X2: subst,X3: term,X4: subst] :
                            ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                            = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                       => ! [X2: term,X3: term] :
                            ( ( lam @ ( X1 @ sh @ one ) )
                           != ( ap @ ( sub @ X2 @ id ) @ X3 ) ) )
                   => ( ! [X1: subst > term > term] :
                          ( ! [X2: subst,X3: term,X4: subst] :
                              ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                              = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                         => ~ ( var @ ( sub @ ( lam @ ( X1 @ sh @ one ) ) @ id ) ) )
                     => ! [X1: term,X2: term] :
                          ~ ( var @ ( sub @ ( ap @ ( sub @ X1 @ id ) @ X2 ) @ id ) ) ) ) ) ) ) ) ) ) ),
    introduced(assumption,[]) ).

thf(h49,assumption,
    ! [X1: term > $o] :
      ( ! [X2: term,X3: term] :
          ( ( X1 @ X2 )
         => ( ( X1 @ X3 )
           => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
     => ( ! [X2: term] :
            ( ! [X3: term] :
                ( ( X1 @ X3 )
               => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
           => ( X1 @ ( lam @ X2 ) ) )
       => ! [X2: term,X3: subst] :
            ( ! [X4: term] :
                ( ( var @ X4 )
               => ( X1 @ ( sub @ X4 @ X3 ) ) )
           => ( X1 @ ( sub @ X2 @ X3 ) ) ) ) ),
    introduced(assumption,[]) ).

thf(h50,assumption,
    ~ ( ! [X1: term > $o] :
          ( ! [X2: term] :
              ( ( var @ X2 )
             => ( X1 @ X2 ) )
         => ( ! [X2: term,X3: term] :
                ( ( X1 @ X2 )
               => ( ( X1 @ X3 )
                 => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
           => ( ! [X2: term] :
                  ( ! [X3: term] :
                      ( ( X1 @ X3 )
                     => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                 => ( X1 @ ( lam @ X2 ) ) )
             => ! [X2: term] : ( X1 @ X2 ) ) ) )
     => ( ~ ( ~ ( ! [X1: subst,X2: subst,X3: subst] :
                    ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
                    = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
               => ~ ! [X1: subst] :
                      ( ( comp @ id @ X1 )
                      = X1 ) )
           => ~ ! [X1: subst] :
                  ( ( comp @ X1 @ id )
                  = X1 ) )
       => ( ~ ( ! [X1: term,X2: subst,X3: subst] :
                  ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
                  = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) )
             => ~ sP1 )
         => ( ! [X1: term,X2: term,X3: term,X4: term] :
                ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                  = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
               => ( X1 = X2 ) )
           => ( ! [X1: term,X2: term,X3: term,X4: term] :
                  ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                    = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                 => ( X3 = X4 ) )
             => ( ! [X1: subst > term > term] :
                    ( ! [X2: subst,X3: term,X4: subst] :
                        ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                        = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                   => ! [X2: subst > term > term] :
                        ( ! [X3: subst,X4: term,X5: subst] :
                            ( ( sub @ ( X2 @ X3 @ X4 ) @ X5 )
                            = ( X2 @ ( comp @ X3 @ X5 ) @ ( sub @ X4 @ X5 ) ) )
                       => ( ( ( lam @ ( X1 @ sh @ one ) )
                            = ( lam @ ( X2 @ sh @ one ) ) )
                         => ! [X3: subst,X4: term] :
                              ( ( X1 @ X3 @ X4 )
                              = ( X2 @ X3 @ X4 ) ) ) ) )
               => ( ! [X1: subst > term > term] :
                      ( ! [X2: subst,X3: term,X4: subst] :
                          ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                          = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                     => ! [X2: term,X3: term] :
                          ( ( lam @ ( X1 @ sh @ one ) )
                         != ( ap @ ( sub @ X2 @ id ) @ X3 ) ) )
                 => ( ! [X1: subst > term > term] :
                        ( ! [X2: subst,X3: term,X4: subst] :
                            ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                            = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                       => ~ ( var @ ( sub @ ( lam @ ( X1 @ sh @ one ) ) @ id ) ) )
                   => ! [X1: term,X2: term] :
                        ~ ( var @ ( sub @ ( ap @ ( sub @ X1 @ id ) @ X2 ) @ id ) ) ) ) ) ) ) ) ) ),
    introduced(assumption,[]) ).

thf(h51,assumption,
    ! [X1: term > $o] :
      ( ! [X2: term] :
          ( ( var @ X2 )
         => ( X1 @ X2 ) )
     => ( ! [X2: term,X3: term] :
            ( ( X1 @ X2 )
           => ( ( X1 @ X3 )
             => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
       => ( ! [X2: term] :
              ( ! [X3: term] :
                  ( ( X1 @ X3 )
                 => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
             => ( X1 @ ( lam @ X2 ) ) )
         => ! [X2: term] : ( X1 @ X2 ) ) ) ),
    introduced(assumption,[]) ).

thf(h52,assumption,
    ~ ( ~ ( ~ ( ! [X1: subst,X2: subst,X3: subst] :
                  ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
                  = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
             => ~ ! [X1: subst] :
                    ( ( comp @ id @ X1 )
                    = X1 ) )
         => ~ ! [X1: subst] :
                ( ( comp @ X1 @ id )
                = X1 ) )
     => ( ~ ( ! [X1: term,X2: subst,X3: subst] :
                ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
                = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) )
           => ~ sP1 )
       => ( ! [X1: term,X2: term,X3: term,X4: term] :
              ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
             => ( X1 = X2 ) )
         => ( ! [X1: term,X2: term,X3: term,X4: term] :
                ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                  = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
               => ( X3 = X4 ) )
           => ( ! [X1: subst > term > term] :
                  ( ! [X2: subst,X3: term,X4: subst] :
                      ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                      = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                 => ! [X2: subst > term > term] :
                      ( ! [X3: subst,X4: term,X5: subst] :
                          ( ( sub @ ( X2 @ X3 @ X4 ) @ X5 )
                          = ( X2 @ ( comp @ X3 @ X5 ) @ ( sub @ X4 @ X5 ) ) )
                     => ( ( ( lam @ ( X1 @ sh @ one ) )
                          = ( lam @ ( X2 @ sh @ one ) ) )
                       => ! [X3: subst,X4: term] :
                            ( ( X1 @ X3 @ X4 )
                            = ( X2 @ X3 @ X4 ) ) ) ) )
             => ( ! [X1: subst > term > term] :
                    ( ! [X2: subst,X3: term,X4: subst] :
                        ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                        = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                   => ! [X2: term,X3: term] :
                        ( ( lam @ ( X1 @ sh @ one ) )
                       != ( ap @ ( sub @ X2 @ id ) @ X3 ) ) )
               => ( ! [X1: subst > term > term] :
                      ( ! [X2: subst,X3: term,X4: subst] :
                          ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                          = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                     => ~ ( var @ ( sub @ ( lam @ ( X1 @ sh @ one ) ) @ id ) ) )
                 => ! [X1: term,X2: term] :
                      ~ ( var @ ( sub @ ( ap @ ( sub @ X1 @ id ) @ X2 ) @ id ) ) ) ) ) ) ) ) ),
    introduced(assumption,[]) ).

thf(h53,assumption,
    ~ ( ~ ( ! [X1: subst,X2: subst,X3: subst] :
              ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
              = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
         => ~ ! [X1: subst] :
                ( ( comp @ id @ X1 )
                = X1 ) )
     => ~ ! [X1: subst] :
            ( ( comp @ X1 @ id )
            = X1 ) ),
    introduced(assumption,[]) ).

thf(h54,assumption,
    ~ ( ~ ( ! [X1: term,X2: subst,X3: subst] :
              ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
              = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) )
         => ~ sP1 )
     => ( ! [X1: term,X2: term,X3: term,X4: term] :
            ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
              = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
           => ( X1 = X2 ) )
       => ( ! [X1: term,X2: term,X3: term,X4: term] :
              ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
             => ( X3 = X4 ) )
         => ( ! [X1: subst > term > term] :
                ( ! [X2: subst,X3: term,X4: subst] :
                    ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                    = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
               => ! [X2: subst > term > term] :
                    ( ! [X3: subst,X4: term,X5: subst] :
                        ( ( sub @ ( X2 @ X3 @ X4 ) @ X5 )
                        = ( X2 @ ( comp @ X3 @ X5 ) @ ( sub @ X4 @ X5 ) ) )
                   => ( ( ( lam @ ( X1 @ sh @ one ) )
                        = ( lam @ ( X2 @ sh @ one ) ) )
                     => ! [X3: subst,X4: term] :
                          ( ( X1 @ X3 @ X4 )
                          = ( X2 @ X3 @ X4 ) ) ) ) )
           => ( ! [X1: subst > term > term] :
                  ( ! [X2: subst,X3: term,X4: subst] :
                      ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                      = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                 => ! [X2: term,X3: term] :
                      ( ( lam @ ( X1 @ sh @ one ) )
                     != ( ap @ ( sub @ X2 @ id ) @ X3 ) ) )
             => ( ! [X1: subst > term > term] :
                    ( ! [X2: subst,X3: term,X4: subst] :
                        ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                        = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                   => ~ ( var @ ( sub @ ( lam @ ( X1 @ sh @ one ) ) @ id ) ) )
               => ! [X1: term,X2: term] :
                    ~ ( var @ ( sub @ ( ap @ ( sub @ X1 @ id ) @ X2 ) @ id ) ) ) ) ) ) ) ),
    introduced(assumption,[]) ).

thf(h55,assumption,
    ~ ( ! [X1: subst,X2: subst,X3: subst] :
          ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
          = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
     => ~ ! [X1: subst] :
            ( ( comp @ id @ X1 )
            = X1 ) ),
    introduced(assumption,[]) ).

thf(h56,assumption,
    ~ ( ! [X1: term,X2: subst,X3: subst] :
          ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
          = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) )
     => ~ sP1 ),
    introduced(assumption,[]) ).

thf(h57,assumption,
    ~ ( ! [X1: term,X2: term,X3: term,X4: term] :
          ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
            = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
         => ( X1 = X2 ) )
     => ( ! [X1: term,X2: term,X3: term,X4: term] :
            ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
              = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
           => ( X3 = X4 ) )
       => ( ! [X1: subst > term > term] :
              ( ! [X2: subst,X3: term,X4: subst] :
                  ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                  = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
             => ! [X2: subst > term > term] :
                  ( ! [X3: subst,X4: term,X5: subst] :
                      ( ( sub @ ( X2 @ X3 @ X4 ) @ X5 )
                      = ( X2 @ ( comp @ X3 @ X5 ) @ ( sub @ X4 @ X5 ) ) )
                 => ( ( ( lam @ ( X1 @ sh @ one ) )
                      = ( lam @ ( X2 @ sh @ one ) ) )
                   => ! [X3: subst,X4: term] :
                        ( ( X1 @ X3 @ X4 )
                        = ( X2 @ X3 @ X4 ) ) ) ) )
         => ( ! [X1: subst > term > term] :
                ( ! [X2: subst,X3: term,X4: subst] :
                    ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                    = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
               => ! [X2: term,X3: term] :
                    ( ( lam @ ( X1 @ sh @ one ) )
                   != ( ap @ ( sub @ X2 @ id ) @ X3 ) ) )
           => ( ! [X1: subst > term > term] :
                  ( ! [X2: subst,X3: term,X4: subst] :
                      ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                      = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                 => ~ ( var @ ( sub @ ( lam @ ( X1 @ sh @ one ) ) @ id ) ) )
             => ! [X1: term,X2: term] :
                  ~ ( var @ ( sub @ ( ap @ ( sub @ X1 @ id ) @ X2 ) @ id ) ) ) ) ) ) ),
    introduced(assumption,[]) ).

thf(h58,assumption,
    ! [X1: term,X2: term,X3: term,X4: term] :
      ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
        = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
     => ( X1 = X2 ) ),
    introduced(assumption,[]) ).

thf(h59,assumption,
    ~ ( ! [X1: term,X2: term,X3: term,X4: term] :
          ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
            = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
         => ( X3 = X4 ) )
     => ( ! [X1: subst > term > term] :
            ( ! [X2: subst,X3: term,X4: subst] :
                ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
           => ! [X2: subst > term > term] :
                ( ! [X3: subst,X4: term,X5: subst] :
                    ( ( sub @ ( X2 @ X3 @ X4 ) @ X5 )
                    = ( X2 @ ( comp @ X3 @ X5 ) @ ( sub @ X4 @ X5 ) ) )
               => ( ( ( lam @ ( X1 @ sh @ one ) )
                    = ( lam @ ( X2 @ sh @ one ) ) )
                 => ! [X3: subst,X4: term] :
                      ( ( X1 @ X3 @ X4 )
                      = ( X2 @ X3 @ X4 ) ) ) ) )
       => ( ! [X1: subst > term > term] :
              ( ! [X2: subst,X3: term,X4: subst] :
                  ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                  = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
             => ! [X2: term,X3: term] :
                  ( ( lam @ ( X1 @ sh @ one ) )
                 != ( ap @ ( sub @ X2 @ id ) @ X3 ) ) )
         => ( ! [X1: subst > term > term] :
                ( ! [X2: subst,X3: term,X4: subst] :
                    ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                    = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
               => ~ ( var @ ( sub @ ( lam @ ( X1 @ sh @ one ) ) @ id ) ) )
           => ! [X1: term,X2: term] :
                ~ ( var @ ( sub @ ( ap @ ( sub @ X1 @ id ) @ X2 ) @ id ) ) ) ) ) ),
    introduced(assumption,[]) ).

thf(h60,assumption,
    ! [X1: term,X2: term,X3: term,X4: term] :
      ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
        = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
     => ( X3 = X4 ) ),
    introduced(assumption,[]) ).

thf(h61,assumption,
    ~ ( ! [X1: subst > term > term] :
          ( ! [X2: subst,X3: term,X4: subst] :
              ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
              = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
         => ! [X2: subst > term > term] :
              ( ! [X3: subst,X4: term,X5: subst] :
                  ( ( sub @ ( X2 @ X3 @ X4 ) @ X5 )
                  = ( X2 @ ( comp @ X3 @ X5 ) @ ( sub @ X4 @ X5 ) ) )
             => ( ( ( lam @ ( X1 @ sh @ one ) )
                  = ( lam @ ( X2 @ sh @ one ) ) )
               => ! [X3: subst,X4: term] :
                    ( ( X1 @ X3 @ X4 )
                    = ( X2 @ X3 @ X4 ) ) ) ) )
     => ( ! [X1: subst > term > term] :
            ( ! [X2: subst,X3: term,X4: subst] :
                ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
           => ! [X2: term,X3: term] :
                ( ( lam @ ( X1 @ sh @ one ) )
               != ( ap @ ( sub @ X2 @ id ) @ X3 ) ) )
       => ( ! [X1: subst > term > term] :
              ( ! [X2: subst,X3: term,X4: subst] :
                  ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                  = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
             => ~ ( var @ ( sub @ ( lam @ ( X1 @ sh @ one ) ) @ id ) ) )
         => ! [X1: term,X2: term] :
              ~ ( var @ ( sub @ ( ap @ ( sub @ X1 @ id ) @ X2 ) @ id ) ) ) ) ),
    introduced(assumption,[]) ).

thf(h62,assumption,
    ! [X1: subst > term > term] :
      ( ! [X2: subst,X3: term,X4: subst] :
          ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
          = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
     => ! [X2: subst > term > term] :
          ( ! [X3: subst,X4: term,X5: subst] :
              ( ( sub @ ( X2 @ X3 @ X4 ) @ X5 )
              = ( X2 @ ( comp @ X3 @ X5 ) @ ( sub @ X4 @ X5 ) ) )
         => ( ( ( lam @ ( X1 @ sh @ one ) )
              = ( lam @ ( X2 @ sh @ one ) ) )
           => ! [X3: subst,X4: term] :
                ( ( X1 @ X3 @ X4 )
                = ( X2 @ X3 @ X4 ) ) ) ) ),
    introduced(assumption,[]) ).

thf(h63,assumption,
    ~ ( ! [X1: subst > term > term] :
          ( ! [X2: subst,X3: term,X4: subst] :
              ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
              = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
         => ! [X2: term,X3: term] :
              ( ( lam @ ( X1 @ sh @ one ) )
             != ( ap @ ( sub @ X2 @ id ) @ X3 ) ) )
     => ( ! [X1: subst > term > term] :
            ( ! [X2: subst,X3: term,X4: subst] :
                ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
           => ~ ( var @ ( sub @ ( lam @ ( X1 @ sh @ one ) ) @ id ) ) )
       => ! [X1: term,X2: term] :
            ~ ( var @ ( sub @ ( ap @ ( sub @ X1 @ id ) @ X2 ) @ id ) ) ) ),
    introduced(assumption,[]) ).

thf(h64,assumption,
    ! [X1: subst > term > term] :
      ( ! [X2: subst,X3: term,X4: subst] :
          ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
          = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
     => ! [X2: term,X3: term] :
          ( ( lam @ ( X1 @ sh @ one ) )
         != ( ap @ ( sub @ X2 @ id ) @ X3 ) ) ),
    introduced(assumption,[]) ).

thf(h65,assumption,
    ~ ( ! [X1: subst > term > term] :
          ( ! [X2: subst,X3: term,X4: subst] :
              ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
              = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
         => ~ ( var @ ( sub @ ( lam @ ( X1 @ sh @ one ) ) @ id ) ) )
     => ! [X1: term,X2: term] :
          ~ ( var @ ( sub @ ( ap @ ( sub @ X1 @ id ) @ X2 ) @ id ) ) ),
    introduced(assumption,[]) ).

thf(h66,assumption,
    ! [X1: subst > term > term] :
      ( ! [X2: subst,X3: term,X4: subst] :
          ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
          = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
     => ~ ( var @ ( sub @ ( lam @ ( X1 @ sh @ one ) ) @ id ) ) ),
    introduced(assumption,[]) ).

thf(h67,assumption,
    ~ ! [X1: term,X2: term] :
        ~ ( var @ ( sub @ ( ap @ ( sub @ X1 @ id ) @ X2 ) @ id ) ),
    introduced(assumption,[]) ).

thf(h68,assumption,
    ~ ! [X1: term] :
        ~ ( var @ ( sub @ ( ap @ ( sub @ eigen__0 @ id ) @ X1 ) @ id ) ),
    introduced(assumption,[]) ).

thf(h69,assumption,
    sP5,
    introduced(assumption,[]) ).

thf(1,plain,
    ( ~ sP5
    | sP6
    | ~ sP2 ),
    inference(mating_rule,[status(thm)],]) ).

thf(2,plain,
    ( ~ sP3
    | ~ sP6 ),
    inference(all_rule,[status(thm)],]) ).

thf(3,plain,
    ( ~ sP4
    | sP3 ),
    inference(all_rule,[status(thm)],]) ).

thf(4,plain,
    ( ~ sP1
    | sP2 ),
    inference(all_rule,[status(thm)],]) ).

thf(5,plain,
    $false,
    inference(prop_unsat,[status(thm),assumptions([h69,h68,h66,h67,h64,h65,h62,h63,h60,h61,h58,h59,h9,h5,h56,h57,h15,h11,h55,h19,h53,h54,h51,h52,h49,h50,h47,h48,h45,h46,h43,h44,h41,h42,h39,h40,h37,h38,h35,h36,h33,h34,h31,h32,h29,h30,h27,h28,h25,h26,h23,h24,h21,h22,h19,h20,h17,h18,h15,h16,h13,h14,h11,h12,h9,h10,h7,h8,h5,h6,h3,h4,h1,h2,h0])],[1,2,3,4,h5,h41,h69]) ).

thf(6,plain,
    $false,
    inference(tab_negall,[status(thm),assumptions([h68,h66,h67,h64,h65,h62,h63,h60,h61,h58,h59,h9,h5,h56,h57,h15,h11,h55,h19,h53,h54,h51,h52,h49,h50,h47,h48,h45,h46,h43,h44,h41,h42,h39,h40,h37,h38,h35,h36,h33,h34,h31,h32,h29,h30,h27,h28,h25,h26,h23,h24,h21,h22,h19,h20,h17,h18,h15,h16,h13,h14,h11,h12,h9,h10,h7,h8,h5,h6,h3,h4,h1,h2,h0]),tab_negall(discharge,[h69]),tab_negall(eigenvar,eigen__1)],[h68,5,h69]) ).

thf(7,plain,
    $false,
    inference(tab_negall,[status(thm),assumptions([h66,h67,h64,h65,h62,h63,h60,h61,h58,h59,h9,h5,h56,h57,h15,h11,h55,h19,h53,h54,h51,h52,h49,h50,h47,h48,h45,h46,h43,h44,h41,h42,h39,h40,h37,h38,h35,h36,h33,h34,h31,h32,h29,h30,h27,h28,h25,h26,h23,h24,h21,h22,h19,h20,h17,h18,h15,h16,h13,h14,h11,h12,h9,h10,h7,h8,h5,h6,h3,h4,h1,h2,h0]),tab_negall(discharge,[h68]),tab_negall(eigenvar,eigen__0)],[h67,6,h68]) ).

thf(8,plain,
    $false,
    inference(tab_negimp,[status(thm),assumptions([h64,h65,h62,h63,h60,h61,h58,h59,h9,h5,h56,h57,h15,h11,h55,h19,h53,h54,h51,h52,h49,h50,h47,h48,h45,h46,h43,h44,h41,h42,h39,h40,h37,h38,h35,h36,h33,h34,h31,h32,h29,h30,h27,h28,h25,h26,h23,h24,h21,h22,h19,h20,h17,h18,h15,h16,h13,h14,h11,h12,h9,h10,h7,h8,h5,h6,h3,h4,h1,h2,h0]),tab_negimp(discharge,[h66,h67])],[h65,7,h66,h67]) ).

thf(9,plain,
    $false,
    inference(tab_negimp,[status(thm),assumptions([h62,h63,h60,h61,h58,h59,h9,h5,h56,h57,h15,h11,h55,h19,h53,h54,h51,h52,h49,h50,h47,h48,h45,h46,h43,h44,h41,h42,h39,h40,h37,h38,h35,h36,h33,h34,h31,h32,h29,h30,h27,h28,h25,h26,h23,h24,h21,h22,h19,h20,h17,h18,h15,h16,h13,h14,h11,h12,h9,h10,h7,h8,h5,h6,h3,h4,h1,h2,h0]),tab_negimp(discharge,[h64,h65])],[h63,8,h64,h65]) ).

thf(10,plain,
    $false,
    inference(tab_negimp,[status(thm),assumptions([h60,h61,h58,h59,h9,h5,h56,h57,h15,h11,h55,h19,h53,h54,h51,h52,h49,h50,h47,h48,h45,h46,h43,h44,h41,h42,h39,h40,h37,h38,h35,h36,h33,h34,h31,h32,h29,h30,h27,h28,h25,h26,h23,h24,h21,h22,h19,h20,h17,h18,h15,h16,h13,h14,h11,h12,h9,h10,h7,h8,h5,h6,h3,h4,h1,h2,h0]),tab_negimp(discharge,[h62,h63])],[h61,9,h62,h63]) ).

thf(11,plain,
    $false,
    inference(tab_negimp,[status(thm),assumptions([h58,h59,h9,h5,h56,h57,h15,h11,h55,h19,h53,h54,h51,h52,h49,h50,h47,h48,h45,h46,h43,h44,h41,h42,h39,h40,h37,h38,h35,h36,h33,h34,h31,h32,h29,h30,h27,h28,h25,h26,h23,h24,h21,h22,h19,h20,h17,h18,h15,h16,h13,h14,h11,h12,h9,h10,h7,h8,h5,h6,h3,h4,h1,h2,h0]),tab_negimp(discharge,[h60,h61])],[h59,10,h60,h61]) ).

thf(12,plain,
    $false,
    inference(tab_negimp,[status(thm),assumptions([h9,h5,h56,h57,h15,h11,h55,h19,h53,h54,h51,h52,h49,h50,h47,h48,h45,h46,h43,h44,h41,h42,h39,h40,h37,h38,h35,h36,h33,h34,h31,h32,h29,h30,h27,h28,h25,h26,h23,h24,h21,h22,h19,h20,h17,h18,h15,h16,h13,h14,h11,h12,h9,h10,h7,h8,h5,h6,h3,h4,h1,h2,h0]),tab_negimp(discharge,[h58,h59])],[h57,11,h58,h59]) ).

thf(13,plain,
    $false,
    inference(tab_negimp,[status(thm),assumptions([h56,h57,h15,h11,h55,h19,h53,h54,h51,h52,h49,h50,h47,h48,h45,h46,h43,h44,h41,h42,h39,h40,h37,h38,h35,h36,h33,h34,h31,h32,h29,h30,h27,h28,h25,h26,h23,h24,h21,h22,h19,h20,h17,h18,h15,h16,h13,h14,h11,h12,h9,h10,h7,h8,h5,h6,h3,h4,h1,h2,h0]),tab_negimp(discharge,[h9,h5])],[h56,12,h9,h5]) ).

thf(14,plain,
    $false,
    inference(tab_negimp,[status(thm),assumptions([h15,h11,h55,h19,h53,h54,h51,h52,h49,h50,h47,h48,h45,h46,h43,h44,h41,h42,h39,h40,h37,h38,h35,h36,h33,h34,h31,h32,h29,h30,h27,h28,h25,h26,h23,h24,h21,h22,h19,h20,h17,h18,h15,h16,h13,h14,h11,h12,h9,h10,h7,h8,h5,h6,h3,h4,h1,h2,h0]),tab_negimp(discharge,[h56,h57])],[h54,13,h56,h57]) ).

thf(15,plain,
    $false,
    inference(tab_negimp,[status(thm),assumptions([h55,h19,h53,h54,h51,h52,h49,h50,h47,h48,h45,h46,h43,h44,h41,h42,h39,h40,h37,h38,h35,h36,h33,h34,h31,h32,h29,h30,h27,h28,h25,h26,h23,h24,h21,h22,h19,h20,h17,h18,h15,h16,h13,h14,h11,h12,h9,h10,h7,h8,h5,h6,h3,h4,h1,h2,h0]),tab_negimp(discharge,[h15,h11])],[h55,14,h15,h11]) ).

thf(16,plain,
    $false,
    inference(tab_negimp,[status(thm),assumptions([h53,h54,h51,h52,h49,h50,h47,h48,h45,h46,h43,h44,h41,h42,h39,h40,h37,h38,h35,h36,h33,h34,h31,h32,h29,h30,h27,h28,h25,h26,h23,h24,h21,h22,h19,h20,h17,h18,h15,h16,h13,h14,h11,h12,h9,h10,h7,h8,h5,h6,h3,h4,h1,h2,h0]),tab_negimp(discharge,[h55,h19])],[h53,15,h55,h19]) ).

thf(17,plain,
    $false,
    inference(tab_negimp,[status(thm),assumptions([h51,h52,h49,h50,h47,h48,h45,h46,h43,h44,h41,h42,h39,h40,h37,h38,h35,h36,h33,h34,h31,h32,h29,h30,h27,h28,h25,h26,h23,h24,h21,h22,h19,h20,h17,h18,h15,h16,h13,h14,h11,h12,h9,h10,h7,h8,h5,h6,h3,h4,h1,h2,h0]),tab_negimp(discharge,[h53,h54])],[h52,16,h53,h54]) ).

thf(18,plain,
    $false,
    inference(tab_negimp,[status(thm),assumptions([h49,h50,h47,h48,h45,h46,h43,h44,h41,h42,h39,h40,h37,h38,h35,h36,h33,h34,h31,h32,h29,h30,h27,h28,h25,h26,h23,h24,h21,h22,h19,h20,h17,h18,h15,h16,h13,h14,h11,h12,h9,h10,h7,h8,h5,h6,h3,h4,h1,h2,h0]),tab_negimp(discharge,[h51,h52])],[h50,17,h51,h52]) ).

thf(19,plain,
    $false,
    inference(tab_negimp,[status(thm),assumptions([h47,h48,h45,h46,h43,h44,h41,h42,h39,h40,h37,h38,h35,h36,h33,h34,h31,h32,h29,h30,h27,h28,h25,h26,h23,h24,h21,h22,h19,h20,h17,h18,h15,h16,h13,h14,h11,h12,h9,h10,h7,h8,h5,h6,h3,h4,h1,h2,h0]),tab_negimp(discharge,[h49,h50])],[h48,18,h49,h50]) ).

thf(20,plain,
    $false,
    inference(tab_negimp,[status(thm),assumptions([h45,h46,h43,h44,h41,h42,h39,h40,h37,h38,h35,h36,h33,h34,h31,h32,h29,h30,h27,h28,h25,h26,h23,h24,h21,h22,h19,h20,h17,h18,h15,h16,h13,h14,h11,h12,h9,h10,h7,h8,h5,h6,h3,h4,h1,h2,h0]),tab_negimp(discharge,[h47,h48])],[h46,19,h47,h48]) ).

thf(21,plain,
    $false,
    inference(tab_negimp,[status(thm),assumptions([h43,h44,h41,h42,h39,h40,h37,h38,h35,h36,h33,h34,h31,h32,h29,h30,h27,h28,h25,h26,h23,h24,h21,h22,h19,h20,h17,h18,h15,h16,h13,h14,h11,h12,h9,h10,h7,h8,h5,h6,h3,h4,h1,h2,h0]),tab_negimp(discharge,[h45,h46])],[h44,20,h45,h46]) ).

thf(22,plain,
    $false,
    inference(tab_negimp,[status(thm),assumptions([h41,h42,h39,h40,h37,h38,h35,h36,h33,h34,h31,h32,h29,h30,h27,h28,h25,h26,h23,h24,h21,h22,h19,h20,h17,h18,h15,h16,h13,h14,h11,h12,h9,h10,h7,h8,h5,h6,h3,h4,h1,h2,h0]),tab_negimp(discharge,[h43,h44])],[h42,21,h43,h44]) ).

thf(23,plain,
    $false,
    inference(tab_negimp,[status(thm),assumptions([h39,h40,h37,h38,h35,h36,h33,h34,h31,h32,h29,h30,h27,h28,h25,h26,h23,h24,h21,h22,h19,h20,h17,h18,h15,h16,h13,h14,h11,h12,h9,h10,h7,h8,h5,h6,h3,h4,h1,h2,h0]),tab_negimp(discharge,[h41,h42])],[h40,22,h41,h42]) ).

thf(24,plain,
    $false,
    inference(tab_negimp,[status(thm),assumptions([h37,h38,h35,h36,h33,h34,h31,h32,h29,h30,h27,h28,h25,h26,h23,h24,h21,h22,h19,h20,h17,h18,h15,h16,h13,h14,h11,h12,h9,h10,h7,h8,h5,h6,h3,h4,h1,h2,h0]),tab_negimp(discharge,[h39,h40])],[h38,23,h39,h40]) ).

thf(25,plain,
    $false,
    inference(tab_negimp,[status(thm),assumptions([h35,h36,h33,h34,h31,h32,h29,h30,h27,h28,h25,h26,h23,h24,h21,h22,h19,h20,h17,h18,h15,h16,h13,h14,h11,h12,h9,h10,h7,h8,h5,h6,h3,h4,h1,h2,h0]),tab_negimp(discharge,[h37,h38])],[h36,24,h37,h38]) ).

thf(26,plain,
    $false,
    inference(tab_negimp,[status(thm),assumptions([h33,h34,h31,h32,h29,h30,h27,h28,h25,h26,h23,h24,h21,h22,h19,h20,h17,h18,h15,h16,h13,h14,h11,h12,h9,h10,h7,h8,h5,h6,h3,h4,h1,h2,h0]),tab_negimp(discharge,[h35,h36])],[h34,25,h35,h36]) ).

thf(27,plain,
    $false,
    inference(tab_negimp,[status(thm),assumptions([h31,h32,h29,h30,h27,h28,h25,h26,h23,h24,h21,h22,h19,h20,h17,h18,h15,h16,h13,h14,h11,h12,h9,h10,h7,h8,h5,h6,h3,h4,h1,h2,h0]),tab_negimp(discharge,[h33,h34])],[h32,26,h33,h34]) ).

thf(28,plain,
    $false,
    inference(tab_negimp,[status(thm),assumptions([h29,h30,h27,h28,h25,h26,h23,h24,h21,h22,h19,h20,h17,h18,h15,h16,h13,h14,h11,h12,h9,h10,h7,h8,h5,h6,h3,h4,h1,h2,h0]),tab_negimp(discharge,[h31,h32])],[h30,27,h31,h32]) ).

thf(29,plain,
    $false,
    inference(tab_negimp,[status(thm),assumptions([h27,h28,h25,h26,h23,h24,h21,h22,h19,h20,h17,h18,h15,h16,h13,h14,h11,h12,h9,h10,h7,h8,h5,h6,h3,h4,h1,h2,h0]),tab_negimp(discharge,[h29,h30])],[h28,28,h29,h30]) ).

thf(30,plain,
    $false,
    inference(tab_negimp,[status(thm),assumptions([h25,h26,h23,h24,h21,h22,h19,h20,h17,h18,h15,h16,h13,h14,h11,h12,h9,h10,h7,h8,h5,h6,h3,h4,h1,h2,h0]),tab_negimp(discharge,[h27,h28])],[h26,29,h27,h28]) ).

thf(31,plain,
    $false,
    inference(tab_negimp,[status(thm),assumptions([h23,h24,h21,h22,h19,h20,h17,h18,h15,h16,h13,h14,h11,h12,h9,h10,h7,h8,h5,h6,h3,h4,h1,h2,h0]),tab_negimp(discharge,[h25,h26])],[h24,30,h25,h26]) ).

thf(32,plain,
    $false,
    inference(tab_negimp,[status(thm),assumptions([h21,h22,h19,h20,h17,h18,h15,h16,h13,h14,h11,h12,h9,h10,h7,h8,h5,h6,h3,h4,h1,h2,h0]),tab_negimp(discharge,[h23,h24])],[h22,31,h23,h24]) ).

thf(33,plain,
    $false,
    inference(tab_negimp,[status(thm),assumptions([h19,h20,h17,h18,h15,h16,h13,h14,h11,h12,h9,h10,h7,h8,h5,h6,h3,h4,h1,h2,h0]),tab_negimp(discharge,[h21,h22])],[h20,32,h21,h22]) ).

thf(34,plain,
    $false,
    inference(tab_negimp,[status(thm),assumptions([h17,h18,h15,h16,h13,h14,h11,h12,h9,h10,h7,h8,h5,h6,h3,h4,h1,h2,h0]),tab_negimp(discharge,[h19,h20])],[h18,33,h19,h20]) ).

thf(35,plain,
    $false,
    inference(tab_negimp,[status(thm),assumptions([h15,h16,h13,h14,h11,h12,h9,h10,h7,h8,h5,h6,h3,h4,h1,h2,h0]),tab_negimp(discharge,[h17,h18])],[h16,34,h17,h18]) ).

thf(36,plain,
    $false,
    inference(tab_negimp,[status(thm),assumptions([h13,h14,h11,h12,h9,h10,h7,h8,h5,h6,h3,h4,h1,h2,h0]),tab_negimp(discharge,[h15,h16])],[h14,35,h15,h16]) ).

thf(37,plain,
    $false,
    inference(tab_negimp,[status(thm),assumptions([h11,h12,h9,h10,h7,h8,h5,h6,h3,h4,h1,h2,h0]),tab_negimp(discharge,[h13,h14])],[h12,36,h13,h14]) ).

thf(38,plain,
    $false,
    inference(tab_negimp,[status(thm),assumptions([h9,h10,h7,h8,h5,h6,h3,h4,h1,h2,h0]),tab_negimp(discharge,[h11,h12])],[h10,37,h11,h12]) ).

thf(39,plain,
    $false,
    inference(tab_negimp,[status(thm),assumptions([h7,h8,h5,h6,h3,h4,h1,h2,h0]),tab_negimp(discharge,[h9,h10])],[h8,38,h9,h10]) ).

thf(40,plain,
    $false,
    inference(tab_negimp,[status(thm),assumptions([h5,h6,h3,h4,h1,h2,h0]),tab_negimp(discharge,[h7,h8])],[h6,39,h7,h8]) ).

thf(41,plain,
    $false,
    inference(tab_negimp,[status(thm),assumptions([h3,h4,h1,h2,h0]),tab_negimp(discharge,[h5,h6])],[h4,40,h5,h6]) ).

thf(42,plain,
    $false,
    inference(tab_negimp,[status(thm),assumptions([h1,h2,h0]),tab_negimp(discharge,[h3,h4])],[h2,41,h3,h4]) ).

thf(43,plain,
    $false,
    inference(tab_negimp,[status(thm),assumptions([h0]),tab_negimp(discharge,[h1,h2])],[h0,42,h1,h2]) ).

thf(0,theorem,
    ( ! [X1: term,X2: term,X3: subst] :
        ( ( sub @ ( ap @ X1 @ X2 ) @ X3 )
        = ( ap @ ( sub @ X1 @ X3 ) @ ( sub @ X2 @ X3 ) ) )
   => ( ! [X1: term,X2: subst] :
          ( ( sub @ one @ ( push @ X1 @ X2 ) )
          = X1 )
     => ( sP1
       => ( ! [X1: term,X2: subst] :
              ( ( sub @ ( lam @ X1 ) @ X2 )
              = ( lam @ ( sub @ X1 @ ( push @ one @ ( comp @ X2 @ sh ) ) ) ) )
         => ( ! [X1: term,X2: subst,X3: subst] :
                ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
                = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) )
           => ( ! [X1: subst] :
                  ( ( comp @ id @ X1 )
                  = X1 )
             => ( ! [X1: term,X2: subst] :
                    ( ( comp @ sh @ ( push @ X1 @ X2 ) )
                    = X2 )
               => ( ! [X1: subst,X2: subst,X3: subst] :
                      ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
                      = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
                 => ( ! [X1: term,X2: subst,X3: subst] :
                        ( ( comp @ ( push @ X1 @ X2 ) @ X3 )
                        = ( push @ ( sub @ X1 @ X3 ) @ ( comp @ X2 @ X3 ) ) )
                   => ( ! [X1: subst] :
                          ( ( comp @ X1 @ id )
                          = X1 )
                     => ( ( ( push @ one @ sh )
                          = id )
                       => ( ! [X1: subst] :
                              ( ( push @ ( sub @ one @ X1 ) @ ( comp @ sh @ X1 ) )
                              = X1 )
                         => ( ( var @ one )
                           => ( ! [X1: term] :
                                  ( ( var @ X1 )
                                 => ( var @ ( sub @ X1 @ sh ) ) )
                             => ( ! [X1: term > $o] :
                                    ( ( X1 @ one )
                                   => ( ! [X2: term] :
                                          ( ( var @ X2 )
                                         => ( ( X1 @ X2 )
                                           => ( X1 @ ( sub @ X2 @ sh ) ) ) )
                                     => ! [X2: term] :
                                          ( ( var @ X2 )
                                         => ( X1 @ X2 ) ) ) )
                               => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                      ( ( ( ap @ X1 @ X3 )
                                        = ( ap @ X2 @ X4 ) )
                                     => ( X1 = X2 ) )
                                 => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                        ( ( ( ap @ X1 @ X3 )
                                          = ( ap @ X2 @ X4 ) )
                                       => ( X3 = X4 ) )
                                   => ( ! [X1: term,X2: term] :
                                          ( ( ( lam @ X1 )
                                            = ( lam @ X2 ) )
                                         => ( X1 = X2 ) )
                                     => ( ! [X1: term,X2: term] :
                                            ( ( ( sub @ X1 @ sh )
                                              = ( sub @ X2 @ sh ) )
                                           => ( X1 = X2 ) )
                                       => ( ! [X1: term,X2: term,X3: term] :
                                              ( ( lam @ X1 )
                                             != ( ap @ X2 @ X3 ) )
                                         => ( sP4
                                           => ( ! [X1: term] :
                                                  ~ ( var @ ( lam @ X1 ) )
                                             => ( ! [X1: term > $o] :
                                                    ( ! [X2: term] :
                                                        ( ( var @ X2 )
                                                       => ( X1 @ X2 ) )
                                                   => ( ! [X2: term,X3: term] :
                                                          ( ( X1 @ X2 )
                                                         => ( ( X1 @ X3 )
                                                           => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                                     => ( ! [X2: term] :
                                                            ( ( X1 @ X2 )
                                                           => ( X1 @ ( lam @ X2 ) ) )
                                                       => ! [X2: term] : ( X1 @ X2 ) ) ) )
                                               => ( ! [X1: term > $o,X2: term,X3: subst] :
                                                      ( ! [X4: term] :
                                                          ( ( var @ X4 )
                                                         => ( X1 @ ( sub @ X4 @ X3 ) ) )
                                                     => ( ( X1 @ X2 )
                                                       => ! [X4: term] :
                                                            ( ( var @ X4 )
                                                           => ( X1 @ ( sub @ X4 @ ( push @ X2 @ X3 ) ) ) ) ) )
                                                 => ( ! [X1: term > $o] :
                                                        ( ! [X2: term,X3: term] :
                                                            ( ( X1 @ X2 )
                                                           => ( ( X1 @ X3 )
                                                             => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                                       => ( ! [X2: term] :
                                                              ( ! [X3: term] :
                                                                  ( ( X1 @ X3 )
                                                                 => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                                                             => ( X1 @ ( lam @ X2 ) ) )
                                                         => ! [X2: term,X3: subst] :
                                                              ( ! [X4: term] :
                                                                  ( ( var @ X4 )
                                                                 => ( X1 @ ( sub @ X4 @ X3 ) ) )
                                                             => ( X1 @ ( sub @ X2 @ X3 ) ) ) ) )
                                                   => ( ! [X1: term > $o] :
                                                          ( ! [X2: term] :
                                                              ( ( var @ X2 )
                                                             => ( X1 @ X2 ) )
                                                         => ( ! [X2: term,X3: term] :
                                                                ( ( X1 @ X2 )
                                                               => ( ( X1 @ X3 )
                                                                 => ( X1 @ ( ap @ X2 @ X3 ) ) ) )
                                                           => ( ! [X2: term] :
                                                                  ( ! [X3: term] :
                                                                      ( ( X1 @ X3 )
                                                                     => ( X1 @ ( sub @ X2 @ ( push @ X3 @ id ) ) ) )
                                                                 => ( X1 @ ( lam @ X2 ) ) )
                                                             => ! [X2: term] : ( X1 @ X2 ) ) ) )
                                                     => ( ~ ( ~ ( ! [X1: subst,X2: subst,X3: subst] :
                                                                    ( ( comp @ ( comp @ X1 @ X2 ) @ X3 )
                                                                    = ( comp @ X1 @ ( comp @ X2 @ X3 ) ) )
                                                               => ~ ! [X1: subst] :
                                                                      ( ( comp @ id @ X1 )
                                                                      = X1 ) )
                                                           => ~ ! [X1: subst] :
                                                                  ( ( comp @ X1 @ id )
                                                                  = X1 ) )
                                                       => ( ~ ( ! [X1: term,X2: subst,X3: subst] :
                                                                  ( ( sub @ ( sub @ X1 @ X2 ) @ X3 )
                                                                  = ( sub @ X1 @ ( comp @ X2 @ X3 ) ) )
                                                             => ~ sP1 )
                                                         => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                                                ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                                                  = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                                                               => ( X1 = X2 ) )
                                                           => ( ! [X1: term,X2: term,X3: term,X4: term] :
                                                                  ( ( ( ap @ ( sub @ X1 @ id ) @ X3 )
                                                                    = ( ap @ ( sub @ X2 @ id ) @ X4 ) )
                                                                 => ( X3 = X4 ) )
                                                             => ( ! [X1: subst > term > term] :
                                                                    ( ! [X2: subst,X3: term,X4: subst] :
                                                                        ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                                        = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                                   => ! [X2: subst > term > term] :
                                                                        ( ! [X3: subst,X4: term,X5: subst] :
                                                                            ( ( sub @ ( X2 @ X3 @ X4 ) @ X5 )
                                                                            = ( X2 @ ( comp @ X3 @ X5 ) @ ( sub @ X4 @ X5 ) ) )
                                                                       => ( ( ( lam @ ( X1 @ sh @ one ) )
                                                                            = ( lam @ ( X2 @ sh @ one ) ) )
                                                                         => ! [X3: subst,X4: term] :
                                                                              ( ( X1 @ X3 @ X4 )
                                                                              = ( X2 @ X3 @ X4 ) ) ) ) )
                                                               => ( ! [X1: subst > term > term] :
                                                                      ( ! [X2: subst,X3: term,X4: subst] :
                                                                          ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                                          = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                                     => ! [X2: term,X3: term] :
                                                                          ( ( lam @ ( X1 @ sh @ one ) )
                                                                         != ( ap @ ( sub @ X2 @ id ) @ X3 ) ) )
                                                                 => ( ! [X1: subst > term > term] :
                                                                        ( ! [X2: subst,X3: term,X4: subst] :
                                                                            ( ( sub @ ( X1 @ X2 @ X3 ) @ X4 )
                                                                            = ( X1 @ ( comp @ X2 @ X4 ) @ ( sub @ X3 @ X4 ) ) )
                                                                       => ~ ( var @ ( sub @ ( lam @ ( X1 @ sh @ one ) ) @ id ) ) )
                                                                   => ! [X1: term,X2: term] :
                                                                        ~ ( var @ ( sub @ ( ap @ ( sub @ X1 @ id ) @ X2 ) @ id ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ),
    inference(contra,[status(thm),contra(discharge,[h0])],[43,h0]) ).

%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.12/0.13  % Problem  : ALG261^1 : TPTP v8.1.2. Bugfixed v5.2.0.
% 0.12/0.13  % Command  : lash -P picomus -M modes -p tstp -t %d %s
% 0.13/0.34  % Computer : n023.cluster.edu
% 0.13/0.34  % Model    : x86_64 x86_64
% 0.13/0.34  % CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.13/0.34  % Memory   : 8042.1875MB
% 0.13/0.34  % OS       : Linux 3.10.0-693.el7.x86_64
% 0.13/0.34  % CPULimit : 300
% 0.13/0.34  % WCLimit  : 300
% 0.13/0.34  % DateTime : Mon Aug 28 03:58:10 EDT 2023
% 0.13/0.35  % CPUTime  : 
% 21.29/21.59  % SZS status Theorem
% 21.29/21.59  % Mode: cade22sinegrackle2xfaf3
% 21.29/21.59  % Steps: 1182
% 21.29/21.59  % SZS output start Proof
% See solution above
%------------------------------------------------------------------------------